数据类型解析
数据类型有基本数据类型和引用数据类型(也叫作复合引用类型)
基本数据类型:数字型和非数字型
细分一下这两个类型
数字型:
字节型 byte 8bit 范围即是-128~+127
短整型 short 16bit 范围即是 -32768~32767
整形 int 32bit 范围即是 -(2^32) ~ 2^32-1
长整型 64bit 范围即是 -(2^64) ~ 2^64-1
浮点型
(单精度)float 32bit (注意 float i=0.1 是错的 因为 0.1默认为double型 所以应该是 float i=(float)0.1
(双精度)double 64bit
浮点型的判断范围与数字型不同
为什么浮点型与数字型判断范围不同
非数字型:
字符型 char 16bit 表示一个字符 取值范围:’0x0000’~’0xffff’
布尔型 boolean 8bit 这个类型只有两个值 true false 适用于判定是否存在等等。
引用数据类型:除了基本数据类型,其他都是引用数据类型。
但是,在这之中有一个特殊的类(String),它与其他的引用数据类型区别的是,它存在一个字符串常量池,声明字符串常量都会连接字符串常量池,当没使用new关键字创建时如果有该字符串,就会从常量池取出该字符串序列
当用new创建时,它会在堆中创建该对象,但是有一个s2在new一个与前一个对象s1的值相同的对象时,后一个对象s2它不会指向s1的地址,而是重新开辟一个空间并指向。
String s1="abc";
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s1.equals(s3));
System.out.println(s3==s4);
System.out.println((s1+"a")==(s2+"a"));