1樓:憶雪龍葵
string s1="abc";
在記憶體中開闢了個空間,放入了一個值abc,把s1指向了這個空間string s2="abc";
沒有再開個空間,而是把s2指向abc
s1==s2
這裡判斷的是兩個變數的記憶體地址是否相同,並不是判斷他們的值是否相同equals判斷的是他們的值是否相同
2樓:匿名使用者
說得不少了啊.真不錯啊.!
3樓:匿名使用者
因為你的s1和s2都指向常量"abc"。
4樓:
看來你還不知道什麼叫物件導向、、、
5樓:
==是判斷兩個變數或例項是不是指向同一個記憶體空間
equals是判斷兩個變數或例項所指向的記憶體空間的值是不是相同
這個回答很簡單明瞭,支援一下
6樓:
如果你是這麼寫:
string s1=new string("abc");
string s2=new string("abc");
那麼結果就是n了;
因為,在8種基本資料型別中有stirng,你定義的是string資料型別的倆字元竄,我寫的就是string類的2個物件。
而equals()方法是string類裡的方法,用於比較兩個物件的引用植是否相同。
7樓:
equals方法判斷的是物件的內容是否相等,而==判斷的是引用是否相等。執行string s1 = "abc"的時候,jvm會在堆區生成一個字串物件「abc」,然後在堆疊區生成一個變數(引用)s1,並把引用指向常量"abc",當執行string s2 = "abc"的時候,由於堆區裡已經有了常量"abc",jvm就不會再生成一個字串常量了,所以它直接在堆疊區生成引用s2,並指向已經存在的常量"abc",所以s1和s2的引用位置是相等的,所以符合s1==s2為真。你可以這樣試試:
string s1 = new string("abc");
string s2 = new string("abc");
在判斷s1==s2,結果就不為真了。因為雖然二者內容相等,但是引用不同了
8樓:匿名使用者
string s1 = "abc";
string s2 = new string("abc");
if (s1 == s2) else
這個就不一樣了
我估計兩個變數 都是對於"abc"的引用
都指向一個實體地址
但是原因我就解釋不大清楚了
9樓:匿名使用者
string s1 = new string("abc");
string s2 = new string("abc");
if (s1 == s2) else
這樣的話就會輸出 n;
因為s1,s2為兩個string物件的引用然而樓主宣告的是兩個string型別的變數,並且其附的值是一樣的,判斷兩者是否相等當然輸出 y。
此時如果用equal()方法的話,同樣是輸出 y,相當於兩者是一樣的。
但在我上面所述的情況下兩者就不同了,使用equal()將會輸出 y,因為其比較的是引用物件的內容是不是一樣的。
10樓:旁笑槐
==是標準運算子啊,可以過載的,string類肯定把它過載了
String型的問題
public string hello 建立了一個字串引用名稱,還建立了一個空字串物件,並且把這個空的字串物件,交給hello來引用。public string hello null 只建立了一個字串的引用名稱,它的引用為空,表示它不引用任何的物件。如果只是想宣告一個字串的引用名稱,第二種方式是比較...
字串是物件嗎,字串是string的一個物件
字串是引用資料型別,是具有一些內建的屬性和方法的。比如string.length 就是表示獲取字串長度,這就可以說明string就是一個物件,是繼承於object類的一個物件。你可以在eclipse myeclipse裡按住ctrl不放,滑鼠左鍵單擊string檢視該物件。純手打,滿意請採納哦,謝謝...
一個矩陣的問題,急,一個矩陣的問題
由 e a 0 得特徵值 a b,對應特徵向量 1,1 t,1,1 t,所以 a 1,1 1,1 a b,0 0,a b 1,1 1,1 因此 a 1,1 1,1 a b,0 0,a b 1,1 1,1 一個矩陣的問題 設這兩個矩陣式a和b 由於a和b各自是正規陣,所以。a h a a a h b ...