關於int和Integer比較的問題
在看到好幾道有關這個int和Integer的值比較的問題,於是搗騰了一番,也釋了疑惑。
1.
Integer a = new Integer(12);
Integer b = new Integer(12);
System.out.println(a == b);
輸出結果:false
分析:是兩個integer引用的比較,==比較的是引用(記憶體地址)
2.
Integer a = 12;
Integer b = 12;
System.out.println(a == b);
輸出結果:true
Integer a = 212; Integer b = 212; System.out.println(a == b);
輸出結果:false
分析:
The Java Language Specification, 3rd Edition 寫道:
- 為了節省記憶體,對於下列包裝物件的兩個例項,當它們的基本值相同時,他們總是==:
- Boolean
- Byte
- Character, \u0000 - \u007f(7f是十進位制的127)
- Integer, -128 — 127
3、
Integer a = 212;
int b = 212;
System.out.println(a == b);
輸出結果:true
分析:在編譯的時候,編譯器是將其轉換成相同的型別進行比較的,即將物件型別轉換成基本型別,System.out.println(i1 == i2)就等同於System.out.println(i1.intValue()
== i2),前面說了,“==”作用於基本型別的時候比較的就是基本型別的值,兩個值都是2,所以結果是true。
關於這個問題憑自己的能力也弄不清楚原因,在下面這篇文章裡終於弄明白了。
http://www.ticmy.com/?p=110相關推薦
關於int和Integer比較的問題
在看到好幾道有關這個int和Integer的值比較的問題,於是搗騰了一番,也釋了疑惑。 1. Integer a = new Integer(12); Integer b = new Integer(12); System.out.println(a == b)
Java中int和integer的比較
Java中,數值型的建立和字串有類似的地方,Integer是Java為了使用物件的屬性和方法給int準備的型別。字串 String s = “bag”; 這樣建立會在常量池中查詢 bag,沒有的話就新建,並不會在堆裡新建。 同樣地,Integer i = 11;也不會在堆裡
int和Integer的簡單比較
int與Integer的區別 1、屬於四類八種基本型別中的一種,用int 宣告的變數是非物件型別,即不能在其上呼叫方法。Integer是一個類(包裝類),用Integer宣告變數其實一個物件型別(或者是一個引用型別) 2、“==”作用於基本型別時比較的是基本型別的值,作用於物件上
int和Integer有什麽區別?
機制 microsoft val family jdk1 經歷 ont .com () 可參考:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html 從Java 5開始引入了自動裝箱/拆
封裝類和非封裝類比較相同不int和Integer
com margin idt val image 相同 -1 img wid A.所有和int(非封裝類比較的,只要數值相同就行) B.io3由valueof弄出來的,所以和io1相同 C.io4是new出來的,所以地址不一樣,就不相同 D.和A相同封裝類和非封裝類比較相
【轉】Java裏面的int和Integer的區別
之間 assert 默認 out val 就會 java常量池 使用 spa int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本數據類型 2、Integer變量必須實例化後才能使用,而int變量不需要 3、Integer實際是對象
int和Integer的區別
() con ger 包裝 -c out vhd 包裝類 fort 1、Integer是int的包裝類,int則是java的一種基本數據類型 2、Integer變量必須實例化後才能使用,而int變量不需要 3、Integer實際是對象的引用,當new一個Integer時,實
Java int和Integer的區別
body 類型轉換 per 區別 primitive ava ger class ron int是基本類型(Primitive),Integer是引用類型(Wrapper)。int是java的原始數據類型,Integer是java為int提供的封裝類。int的變量不需要實例
java面試題之int和Integer的區別
4條 試題 als 自動 數據類型 類型 fort spec 新建 int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本數據類型 2、Integer變量必須實例化後才能使用,而int變量不需要 3、Integer實際是對象的引用,
int和Integer,String和String(包裝類)
內存空間 mage image out info clas 技術 ima spa 1.int和Integer的值如果是一樣的,則是在內存中開辟相同的內存空間 2.但是String和String(包裝類)是不一樣的 代碼演示: int a=1;
2.int和integer的區別?
以前一直沒有思考,為啥要有一個int還要有一個integer。 實際上: 1. Ingeter是int的包裝類,int的初值為0,Ingeter的初值為null; 2.初始化的時候,int i =1; Integer i= new Integer(1);
int和Integer的區別 java
int和Integer的區別 java 1、Integer是int的包裝類,int則是java的一種基本資料型別 ; 2、Integer的預設值是null,int的預設值是0; 3、Integer變數必須例項化後才能使用,而int變數不需要 ; 4、Integer實際是物件的引用,當
int和Integer的區別---之面試常考
int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本資料型別 2、Integer變數必須例項化後才能使用,而int變數不需要 3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而int則是直接儲存資
java學習筆記(一)int和Integer的區別
int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本資料型別 2、Integer變數必須例項化後才能使用,而int變數不需要 3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而int則是直接儲存資料值
Java基礎之int和Integer區別
1、int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本資料型別 2、Integer變數必須例項化後才能使用,而int變數不需要 3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而
int 和 Integer區別
stat app 基本數據 數據類型 編程 ble ger print public Java 是一個近乎純潔的面向對象編程語言,但是為了編程的方便還是引入不是對象的基本數據類型,但是為了能夠將這些基本數據類型當成對象操作,Java 為每一個基本數據類型都引入了對應的包裝類
基本資料型別和包裝類的關係(以int和Integer為例)
public void test(){ int a=10; Integer b=new Integer(10); Integer d= Integer.valueOf(10); Integer e= Integer.valueOf(10); Integer c=10; In
【Java基礎】int和Integer
Java中存在8種基本資料型別:byte(8位)、short(16位)、int(32位)、long(64位)、float(32位)、double(64位)、char(16位,0x0000~0xffff)、boolean(true/false) java中不存在無符號數字型別,
Java基礎之int和Integer有什麼區別
1 int與Integer的基本使用對比 (1)Integer是int的包裝類;int是基本資料型別; (2)Integer變數必須例項化後才能使用;int變數不需要; (3)Integer實際是物件的引用,指向此new的Integer物件;int是直接儲存資料值 ;
java中int和integer的區別
1、Integer是int的包裝類,int則是java的一種基本資料型別 2、Integer變數必須例項化後才能使用,而int變數不需要 3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而int則是直接儲存資料值