Java int 與 Integer 區別
阿新 • • 發佈:2018-12-19
學習借鑑(其實搬了別人的好多)和自己的理解,可能會有較多錯誤,如有疑問聯絡我呀。
- int 是基本資料型別, Integer 是引用型別,也就是一個物件。
- int 儲存的是數值,Integer 儲存的是引用的物件的地址。
- int 佔用記憶體少、Integer 物件佔用記憶體多,因為它需要儲存物件的元資料。
- 不是用 new 生成的 Integer 變數與 new Integer ( ) 生成的變數不同,因為前者是在常量池中的,後者是在堆中的,兩個的地址不同。
- 兩個不是 new 生成 Integer 物件比較,如果變數的值在 [ -128 , 127 ] 之間,比較結果為 true,否則是 false。
- Integer 變數(無論是否 new 生成的)與 int 型別變數來比較,結果都是 true 。這因為要比較時, Integer都會自動拆箱成 int ,這樣子比較就是在比較數值的大小了。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Integer x = new Integer(10); Integer y = 10; Integer z = new Integer(10); int temp = 10; System.out.println(x == y); //false System.out.println(x == z); // false System.out.println(temp == x); // false System.out.println(temp == y); // false } }