string x =
"string"
;string y =
"string"
;string z =
newstring
("string");
system. out.
println
(x==y)
;// true
system. out.
println
(x==z)
;// false
system. out.
println
(x.equals
(y))
;// true
system. out.
println
(x.equals
(z))
;// true
x 是開闢的新的記憶體空間,y並沒有開闢新的記憶體空間,而是指向x指向的物件"string",所以引用x 和引用 y是相同的, 所以 == 是 true,而 new string() 方法則重寫開闢了記憶體空間,所以== 結果為 false,而 equals 比較的是值,所以結果都為 true。
建立了幾個物件?
string s=「abc」; 建立了幾個物件?
毫無疑問,這裡面只建立了乙個物件——「abc";
string s1=「abc」; string s2=s1;建立了幾個物件?
仍然只有乙個物件——「abc";
string s1=「abc」; string s2=」abc";建立了幾個物件?
這裡仍然只有乙個物件——「abc";
string s=「abc」+「def」;建立了幾個物件?
注意,這裡建立了三個物件:「abc"、」def"、「abcdef";
string s=new string(「abc」);建立了幾個物件?
大家也都知道是兩個物件。實際上是"abc"本身就是文字池中的乙個物件,在執行new string()時,把文字池即pool中的字串"abc"複製到堆中,並把這個物件的應用交給s,所以建立了兩個string物件,乙個在pool中,乙個在堆中。
string s1=new string(「abc」);string s2=new string(「abc」);建立了幾個物件?
三個物件。"abc"是文字池中的乙個物件,然後又在堆中用new string()建立了兩個物件。
和equals的區別是什麼
1 是關係運算子,equals是方法,結果都返回布林值 2 object類的和equals都是比較位址,作用相同 作用 jdk中的類一般已經重寫了equals 方法,比較的是內容 自定義的類如果沒有重寫equals方法,將呼叫父類的equals方法 可以根據自己的需求重寫equals方法,重寫equ...
和 equals 的區別是什麼
它的作用是判斷兩個物件的位址是不是相等。即,判斷兩個物件是不是同乙個物件。基本資料型別 比較的是值,引用資料型別 比較的是記憶體位址 equals 它的作用也是判斷兩個物件是否相等。但它一般有兩種使用情況 情況1 類沒有覆蓋 equals 方法。則通過 equals 比較該類的兩個物件時,等價於通過...
和 equals 的區別是什麼
它的作用是判斷兩個物件的位址是不是相等。即,判斷兩個物件是不是同乙個物件。基本資料型別 比較的是值,引用資料型別 比較的是記憶體位址 equals 它的作用也是判斷兩個物件是否相等。但它一般有兩種使用情況 情況1 類沒有覆蓋 equals 方法。則通過 equals 比較該類的兩個物件時,等價於通過...