一、数据类型

  java中数据类型分为基本数据与引用数据类型两大类,其中又有更细致的划分,下面以图展示

二、基本数据类型封装类

Java是一门面向对象的语言,但是在一些情况下基本数据类型无法满足Java面向对象的特性,我们便可以调用包装类的方法完成我们所需要的操作

三、String类

1.String类的两种实例化方式

String是一个很特殊的类,我们通常称呼它为字符串,它既可以采用基本数据类型一样的赋值方式,也可以采用类的方式new一个对象

范例:String str="Hello";

   String str=new String("Hello");

2.字符串之间的比较

说到比较就不得不说 == 和 equals() 方法之间的区别了

“==” 操作符专门用来比较两个变量之间的值是否相等,也就是要比较两个基本类型的数据之间的值是否相等,只能用“==”操作符

如果一个变量指向的数据是对象类型的,那么这时候涉及到了两块内存空间, 如 String str = new String("hello"),变量(在对象这里也叫对象引用名)str占用一块内存(栈空间),对象本身new String("hello")占用的是另一块内存(堆空间),此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。如果要比较两个变量是否指向同一个对象(即看这两个变量所对应的内存中的数值是否相等),这时候就需要使用“==”操作符进行比较了

equals() 方法是用于比较两个独立对象的内容是否相同,比如说两本一年级语文书,用==比较的就是这两本语文书是否是同一本一年级语文书,很明显是false,用equals比较的就是这两本语文书是否内容相同,很明显是true

讲明白这些,接下来讲一下字符串之间的比较

(1) 使用 == 比较字符串

    String str1 = "hello" ;

    String str2 = new String("hello");

    System.out.println(str1 == str2) ;

控制台输出:false

见解:因为str1和str2保存在栈内存中,分别存放了两个对象所保存的内存地址的数值,因此不相等。这种比较属于地址数值比较,并没有比较对象的内容

(2) 使用 equals() 比较字符串

    String str1 = "hello" ;

    String str2 = new String("hello");

    System.out.println(str1.equals(str2)) 

控制台输出:true

(3)

    String str1 = "hello" ;

    String str2 = "hello" ;

    System.out.println(str1 == str2) ;

    System.out.println("hello" == str2) ;

    System.out.println("hello" == "hello") ;

控制台输出:全为true

见解:在JVM的底层实际上会自动维护一个对象池(字符串对象池),如果现在采用了直接赋值的模式对String类对象的实例化操作,那么该实例化对象(字符串)将自动的保存到这个对象池之中。如果下次继续有人使用了直接赋值的模式声明了String类的对象,那么如果此时对象池之中有指定的内容,将进行直接引用,如果没有,则开辟新的字符串对象,而后将其保存在对象池之中以供下次使用(所谓的对象池就是一个对象数组)

3.字符串特性

(1)不可变性:由于字符串是不可变的。所以每次修改字符串都是创建一个单独的字符串副本(又拷贝了一个字符串);

(2)字符串池:当程序中有多个相同的字符串常量时,这时,这些字符串都是指向内存中的同一个字符符串,这个特性叫做:字符串池。之所以字符串池不会造成程序的混乱,也是因为:字符串具有不可变性;

(3)字符串留用(不常用,因为会有一定的内存损耗);

(4)字符串底层实际上就是字符数组,这也是字符串不可变特性的原因之一。

四、Java编程基本规范

良好的Java书写规范,是一名合格的Java开发者所必须具备的条件之一,同时也能保证我们在编程中出错率减少。

在各个文件中,变量名、方法名、类名注意命名时应当见名知义

规则:即为前人定义好的,不可违背

字母(Java中大小写敏感)、数字(不允许为开头)、符号(英文符号_$)、中文(不推荐,就当没有)

规约:即为后来者约定俗成的的规则

类名
首字母大写 两个以上的单词所有首字母大写,即为驼峰命名法
如:SuperPerson
变量名
首字母小写 两个以上的单词,之后的单词首字母大写
如:personName
常量名
字母全大写
如:PERSONCULTURE
方法名
首字母小写 两个以上的单词,之后的单词首字母大写
如:personEat

第二记 Java数据类型的更多相关文章

  1. 学JAVA第三天,JAVA第二章《JAVA数据类型》

    ---恢复内容开始--- <JAVA数据类型> 我们一般都用int类型,因为int类行一般的日常生活的数据都能满足了. 当然,想李嘉诚,马云这种有钱人,int类行就不能满足帮他记钱的了,像 ...

  2. 第二天 Java语言基础

    一.如何定义Java中的类 Java代码都定义在类中,类由class来定义,区分public class和class: 二.main方法的作用 main方法是程序的入口:保证程序的独立运行:被JVM调 ...

  3. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  4. java.sql.Types,数据库字段类型,java数据类型的对应关系

    以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...

  5. 201521123110第二周Java学习总结

    1.本章学习总结 本周的Java学习相对前一周更进了一步,初步学习了Java简单的输入和输出,String类的对象创建后不能修改,它是不可变的,在Java中浮点型默认是double型与C中的int型不 ...

  6. 浅析Java数据类型

    前言: 该系列会辅以MindMap进行说明. 下面会贴两张我不同时期画的Java数据类型的思维导图,本篇主要侧重于Java的8种基本类型 MindMap-1 这张MindMap主要是根据 菜鸟教程+参 ...

  7. JDBC数据类型、Java数据类型、标准sql类型

    本概述是从<JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference>这本书中摘引来的.JavaSoft ...

  8. 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域  

  9. 第二章Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 一.概述 对与Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写delete/free代码,不容易出现内存泄露和内存溢出问 题, ...

随机推荐

  1. Hello cnblogs!

    console.log('Hello cnblogs')!

  2. Device Drivers

    Types of Device Drivers Windows可能会有User-mode的驱动,但是我们只关注Kernel-Mode的驱动. WDM Drivers WDM是一种驱动模型,是比较常用的 ...

  3. LeetCode刷题笔记-递归-反转二叉树

    题目描述: 翻转一棵二叉树. 解题思路: 1.对于二叉树,立马递归 2.先处理 根节点,不需改动 3.处根的左子树和右子树需要交换位置 4.递归处理左子树和右子树.步骤见1-3步 Java代码实现: ...

  4. The Preliminary Contest for ICPC Asia Shenyang 2019 H

    H. Texas hold'em Poker 思路:根据每个牌型分等级,然后排序按照等级优先,最大值次之,次大值,最后比较剩下值的和. #include<bits/stdc++.h> us ...

  5. HTTP 请求及响应 (转)

    HTTP请求 4.1.HTTP请求包括的内容 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求. 一个完整的HTTP请求包括如下内容:一个请求行.若干消息头. ...

  6. 14-python基础—python3中的defaultdict()

    1.collections.defaultdict 类 from collections import defaultdict 2.collections.defaultdict 类与工厂函数dict ...

  7. sublime推荐插件

    SyncedSidebarBg:侧边栏底色统一 Emmet:集合多种功能,大名鼎鼎的 Zen coding ==> 不过对于嵌入式的我没多大用啊 Sublime CodeIntel:代码提示 A ...

  8. 关于导出Excel出现异常的解决办法。:System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败

    异常信息为:System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} ...

  9. 关于STLINK

    关于STLINK 1.STLIN固件升级 1)打开ST-LINK Utility,选择ST-LINK->Firmware update 2)连接ST-LINK 3)可以看到STLINK当前的软件 ...

  10. KiCAD差分布线

    KiCAD差分布线方法 KiCAD在进行差分布线的时候,会自动按照网路名称生成差分对,所以差分对的名称必须是以_P_N或+/-结束,这样才能找到一对差分对,比如说CAN网络,可以定义为CAN_P/CA ...