您的位置:首页 > 编程语言 > Java开发

Java笔记之自动装/拆箱以及类型转换

2017-04-30 22:11 218 查看
1.基础概念

Java中所有的基本类型都有其对应的包装类

基础类型:

boolean char byte int float double long

包装类

Boolean Character Byte Integer Float Double Long Short Void

所谓的装箱就是一个包装类对象接收了一个基础类型对象,这时候就会发生装箱

,将基础类型对象转化成包装类对象,下面使用例子说明

public static void main(String[] args) {
Integer ii = 5;
ii++;
}


在Integer ii = 5; 这行设置断点。



由图片可知, Integer ii = Integer.valueOf(5);

继续向下debug 当运行 ii++时由于++运算符只能对基本数据进行操作

所以ii先会拆箱为int类型再装箱为integer类型

拆箱



运算完成后会装箱成integer类型

陷阱

包装类 Character Integer Float Double Long

在进行==比较时的陷阱

public static void main(String[] args) {
Integer i1 = 15;
Integer i2 = 15;
Integer i3 = 1000;
Integer i4 = 1000;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
Character c1 = 15;
Character c2 = 15;
Character c3 = 300;
Character c4 = 300;
System.out.println(c1 == c2);
System.out.println(c3 == c4);
Float f1 = (float) 15;
Float f2 = (float) 15;
Float f3 = (float) 1500;
Float f4 = (float) 1500;
System.out.println(f1 == f2);
System.out.println(f3 == f4);
Long l1 = (long) 15;
Long l2 = (long) 15;
Long l3 = (long) 1500;
Long l4 = (long) 1500;
System.out.println(l1 == l2);
System.out.println(l3 == l4);
Double d1 = 15.1;
Double d2 = 15.1;
Double d3 = 1500.1;
Double d4 = 1500.1;
System.out.println(d1 == d2);
System.out.println(d3 == d4);
}
结果
true
false
true
false
false
false
true
false
false
false




包装类 Character Integer Long 都具有缓冲池 如果其大小[-128-127]之间直接返回缓存池中的对象 所以比较结果为true 超出范围 就好new一个新对象 那么两个的引用就不同了所以为false

包装类 Float Double 无缓冲池 所以无论大小如何结果都为false

类型装换

两个操作数进行二元操作时,要先转为同一类型再计算

- 两个数中有一个为double 则另一个数为double类型

- 否则 其中有一个数为float类型 另一个操作数为float类型

- 否则 如果有一个为long类型 另一个操作数为long类型

- 否则两个都为int类型

小数类型默认为double类型

Float f3 = (float) 1500;
Long l1 = (long) 15;


所以需要强转

数值进行二元计算最小为int类型所以要进行强制转换

byte i1 = 1;
byte i2 = 2;
i1 = (byte) (i1 + i2);
i1 += i2;
char a = 1;
char b = 1;
a = (char) (a + b);
a += b;
a++;
short s = 1;
short s1 = 1;
s = (short) (s + s1);


到此类型转换以及拆装箱至此差不多结束了

水平有限 若有错误 欢迎指正

参考书籍《Java核心技术》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 装拆箱
相关文章推荐