java复习笔记-基本数据类型与包装类
1.Java的四类八种基本数据类型
布尔型:boolean
字符型 : char
整数型 : byte,short,int,long
浮点型 : float,double
默认值与取值范围:
boolean: false(0) true(1),false(0);
byte: 0 (-128,127);
short: 0 (-2^15,2^15 -1);
int: 0 (-2^31,2^31 -1);
long: 0 (-2^63,2^63 -1);
①int与Integer的区别:
1.int的默认值是0,Integer的默认值是Null;
通过默认值的差异可以区分类似缺考与0分的情景
2.Integer是包装类,int是基本数据类型,new一个Integer是生成一个指针指向引用对象,而int是直接储存数据;
所以,两个new出来的Integer对象用==来判断,永远是false.
Integer i1=new Integer(100);
Integer i2=new Integer(100);
Integer i3 =100;
Integer i4 =100;
int i5 =100;
System.out.println(i1==i2);//false 内存地址不同,==为false
System.out.println(i3==i4);//true 非new生成,自动拆箱作比较
System.out.println(i3==i5);//true i3自动拆箱,与i5的值相等
System.out.println(i3==i2);//false 内存地址与值比较,==为false
Integer a=128;
Integer b=128;
System.out.println(a==b);//false 范围超出了int的取值范围,==的对比结果即为false(由于java中Integer.valueOf()对[-128,127]的数都做了缓存,所以超出此区间的数就没办法从拆箱中取到int值.
②switch语句能否作用在byte上,能否作用在long上,能否作用在string上?
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,
整数表达式可以是int基本类型或Integer包装类型。
由于,byte,short,char都可以隐式转换为int,所以,这些类型以及这些类型的包装类型也是可以的。
long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,
所以,它们不能作用于swtich语句中。
不过,在1.7版本之后switch就可以作用在string上了。
③自动拆装箱
自动装箱:int->Integer
自动拆箱:Integer->int
这是java编译器在基本数据类型和对应的包装类之间做的转换操作
原始类型: boolean,char,byte,short,int,long,float,double
封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
④short s1 =1; s1 +=1;有什么错?
前置知识:基本数据类型转换
(byte,char,short)->int->long->float->double
自动转换:范围小的数据类型编译器可以将其直接转为范围大的类型(隐式);
强制转换:范围大的数据类型可以通过强转转为小的数据类型(显式);
所以,short s1=1;可以进行编译;但是s1=s1+1就会出现转换错误;
但是s1+=1 不会出现异常,+=是java语言规定的运算符,编译器会进行特殊处理,可以正确编译.
⑤字节字符区别
字节是存储容量的基本单位,字符是数子,字母,汉子以及其他语言的各种符号。
1 字节=8 个二进制单位:一个一个字符由一个字节或多个字节的二进制单位组成。
传送门:
http://www.cnblogs.com/guodongdidi/p/6953217.html
https://blog.csdn.net/daidaineteasy/article/details/51088269
网友评论