学习Java的同学注意了!!!
学习进程中遇到甚么问题或想获得学习资源的话,欢迎加入Java学习交换群,群号码:183993990 我们1起学Java!
要理解装箱和拆箱的概念,就要理解Java数据类型
装箱:把基本类型用它们相应的援用类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float
拆箱:和装箱相反,将援用类型的对象简化成值类型的数据
Integer a = 100; 这是自动装箱 (编译器调用的是static Integer valueOf(int i))
int b = new Integer(100); 这是自动拆箱
看下面1段代码
m1
public class DataType
{
public static void main(String
args[]) {
DataType
dt =new DataType();
dt.m11();
dt.m12();
}
public void m11()
{
Integer
a =new Integer(100);
Integer
b =100;
System.out.println("m11
result " +
(a == b));
}
public void m12()
{
Integer
a =new Integer(128);
Integer
b =128;
System.out.println("m12
result " +
(a == b));
}
}
|
打印结果是甚么?
m11 result false
m12 result false
“==”比较的是地址,而a和b两个对象的地址不同,即是两个对象,所以都是false
通过javap解析字节码,内容以下
public
void m11();
Code:
0:
new #44; //class java/lang/Integer
3:
dup
4:
bipush 100
6:
invokespecial #46; //Method java/lang/Integer."<
|