1.基本类型
boolean(true、false)
byte,short,char->int->long->float->double
(1)在给类型赋值时整型(如123),默认类型为int,加上L为long
(2)浮点型(如3.14159),默认类型为double,加上f为float
(3)byte,short,char 一运算就自动转型为int
(4)向箭头方向可自动转型,逆向需强转(有可能会丢失数据,浮点强转为整型,
小数部分自动丢失)
(5)大小依次为1、2、2、4、8、4、8byte(1byte=8bit)
2.例题与解释
答案与解释:
(1)正确,右边为int类型,int类型可以自动转型为long,所以正确。
(2)错误,右边为int类型,但大小已超过int类型的范围,所以无法通过编译,所以后
面需要加上L。
(3)错误,右边为int类型,int赋值给Long,即不会触发自动转型,也不会触发自动封箱
3.关于对象池与自动封箱
运行结果:
true
true
false
首先要知道对象池的概念,java给一部分对象提供了对象池,如String,
Integer、Byte、Short、Long、Character
String对象池先不讨论,而其他5个对象池都是在-128~127的取值范围内是,直接从池中返回地址赋给引用。
(4)true,两个对象之间==比较的是地址,都在-128~127之间,所以返回的都是池内对象的地址,并没有new对象,所以true
(5)true,Long和long之间用==比较,会自动解封,而比较值的大小,所以true
(6)false,超过了对象池的范围,都自动new对象,比较地址当然是false
boolean(true、false)
byte,short,char->int->long->float->double
(1)在给类型赋值时整型(如123),默认类型为int,加上L为long
(2)浮点型(如3.14159),默认类型为double,加上f为float
(3)byte,short,char 一运算就自动转型为int
(4)向箭头方向可自动转型,逆向需强转(有可能会丢失数据,浮点强转为整型,
小数部分自动丢失)
(5)大小依次为1、2、2、4、8、4、8byte(1byte=8bit)
2.例题与解释
(1) long a = 1;
(2) long b = 12345678910;
(3) Long c = 1;
答案与解释:
(1)正确,右边为int类型,int类型可以自动转型为long,所以正确。
(2)错误,右边为int类型,但大小已超过int类型的范围,所以无法通过编译,所以后
面需要加上L。
(3)错误,右边为int类型,int赋值给Long,即不会触发自动转型,也不会触发自动封箱
3.关于对象池与自动封箱
Long d = 1L;
Long e = 1L;
Long f = 128L;
Long g = 128L;
long h = 128;
(4) System.out.println(d==e);
(5) System.out.println(f==h);
(6) System.out.println(f==g);
运行结果:
true
true
false
首先要知道对象池的概念,java给一部分对象提供了对象池,如String,
Integer、Byte、Short、Long、Character
String对象池先不讨论,而其他5个对象池都是在-128~127的取值范围内是,直接从池中返回地址赋给引用。
(4)true,两个对象之间==比较的是地址,都在-128~127之间,所以返回的都是池内对象的地址,并没有new对象,所以true
(5)true,Long和long之间用==比较,会自动解封,而比较值的大小,所以true
(6)false,超过了对象池的范围,都自动new对象,比较地址当然是false