For ==對兩個不同的對象s和p的變量使用new創建的結果作爲false(行1),我知道但爲什麼行3和4(行號註釋)給出true作爲輸出?爲什麼類Test的兩個不同對象的變量爲==操作賦予true,並且對於String對象而言,相同的操作會導致爲false?
我知道這個事實,==是用於參考比較,這是我的疑問,如果它是爲了參考比較,那麼爲什麼第4行給出真正的j是一個整數,並沒有不變性概念String(String s)和每次創建新對象都必須創建?
class World
{
public static void main(String[] args)
{
String s=new String("B");
String p=new String("B");
System.out.println(s==p); //false line 1
Test t1= new Test("A",4);
Test t2= new Test("A",4);
System.out.println(t1==t2); //false line 2
System.out.println(t1.s==t2.s); //true line 3
System.out.println(t1.j==t2.j); //true line 4
}
}
class Test
{
String s;
int j;
Test(String s, int j)
{
this.s=s;
this.j=j;
}
}
「*爲什麼第3行和第4行給出正確,因爲t1和t2是不同的對象*」 - 「t1」和「t2」是不同的對象,但您不在第3行比較它們。他們持有的琴絃,它們不是不同的物體。你有兩個引用相同的字符串文字'「A」',這與你在's'和'p'做的顯式創建新的'String'對象時有很大的不同。 – azurefrog