String的問題,一個String的問題

2022-08-02 01:30:14 字數 1738 閱讀 7409

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 ...