1integer與integer間的比較,從jdk1.5開始,有「自動裝箱」這麼乙個機制,在byte-128到127範圍內(ps整型的八位二進位制的表示的範圍為-128到127),如果存在了乙個值,再建立相同值的時候就不會重新建立,而是引用原來那個,但是超過byte範圍還是會新建的物件。
來自 <>
integer
a1=100;
integer
a2=100;
integer
a3=150;
integer
a4=150;
system.
out.println(a1==a2);//
(true)
system.
out.println(a3==a4)
;// (false)
2基本資料型別和物件比較的時候,物件會自動拆箱為基本資料型別再比較,比較的就是裡面的值而不是位址
來自 <>
integeri1=
newinteger(
128);
inti2=
128;
system.
out.println(i1==i2)
;//true
3//不會經歷拆箱過程,i1的引用指向堆,而i2指向專門存放他的記憶體(常量池),他們的記憶體位址不一樣,所以為false
來自 <>
integeri1=
newinteger(
128);
integeri2=
128;
system.
out.println(i1==i2)
;// false
(注意2和3的區別)
4//兩個都是new,兩個物件間的比較,比較的是位址,所以為false
來自 <>
integera1=
newinteger(
100);
integera2=
newinteger(
100);
integera3=
newinteger(
150);
integera4=
newinteger(
150);
system.
out.println(a1==a2)
;// (false)
system.
out.println(a3==a4)
;// (false)
5 string型別
string a="123";
//在堆建立乙個物件被b引用,然後堆中的值指向常量池的「123」
string b=new string("123");
//兩者指向的位址不同,所以為false
stringa=
"123";
stringb=
newstring(
"123");
system.
out.println(a==b)
;//false
system.
out.println(
"---string
與newstring------"
+a.equals(b))
;// true
來自 <>
注:object中的equal與==的作用相同,但是string類複寫了object類的equal方法,只要a和b的內容相同,則返回true
6 integer的equals方法,比較的是內容
integera1=
newinteger(
100);
integera2=
newinteger(
100);
integera3=
newinteger(
150);
integera4=
newinteger(
150);
system.
out.println(a1.equals(a2))
;// (true)
system.
out.println(a3.equals(a4))
;//(true)
Algs4 2 1 26原始資料型別
2.1.26原始資料型別。編寫乙個能夠處理int值的插入排序的新版本,比較它和正文中所給出的實現 能夠隱式地用自動裝箱和拆箱轉換integer值並排序 的效能。答 原始資料型別相對物件型別約有15 以上的效能提公升。public class insertion private static bool...
基本資料型別(一) 原始資料型別和運算子
python 是由吉多 範羅蘇姆 guido van rossum 在 90 年代早期設計。它是如今最常用的程式語言之一。它的語法簡潔且優美,幾乎就是可執行的偽 用井字元開頭的是單行注釋 多行字串用三個引號 包裹,也常被用來做多 行注釋 整數 3 3 算術沒有什麼出乎意料的 1 1 2 8 1 7 ...
String是原始資料型別還是引用資料型別
呵呵,這個問題最好用實驗證明,一看就明白 object obj aaaa 不會報錯,因為 aaaa 生成出來就是乙個物件 object obj 100 編譯器報錯,提示無法從int 型別強制轉為object 原因 100 為 int 原始資料型別,所以不能轉成object 物件 aaaa 為字串 s...