學習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."<
|