1. 程式人生 > >Java int 與 Integer 區別

Java int 與 Integer 區別

學習借鑑(其實搬了別人的好多)和自己的理解,可能會有較多錯誤,如有疑問聯絡我呀。

  • 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
	}

}