java中的字串比較方法:
1)dustring1.equals(string2)
2) str1==str2 。
java中字串的比較是==比較引用,equals 比較值的做法。但是不同的宣告方法字串的比較結果也是不同的。
例如: String str1=new String("a");
String str2=new String("a");
str1==str2 輸出false
str1.equals(str2) 輸出true
而如果這樣宣告
String str1="a";
String str2="a";
str1==str2 輸出true
這是因為 equals 方法本來也是比較引用的字串類在實現的時候重寫了該方法。
第一種宣告方法等於是聲明瞭兩個物件,用’==‘比較是時候比較的是引用輸出的是false 由於他們的值相同用equals的時候就比較的是值了,輸出true。
第二種情況不是因為比較有與第一種有差異,而是因為宣告有差異,第二種宣告方法在宣告的時候有堆或堆疊 共用的現象,也就是說 在宣告的時候如果如果宣告為類屬性他會檢查在堆疊中有沒有與現在宣告的是相同結構的字串。如果有就直接將地址指向已有記憶體地址。宣告在方法內部的區域性變數原理一樣只不過他是堆疊共享。
java中的字串比較方法:
1)dustring1.equals(string2)
2) str1==str2 。
java中字串的比較是==比較引用,equals 比較值的做法。但是不同的宣告方法字串的比較結果也是不同的。
例如: String str1=new String("a");
String str2=new String("a");
str1==str2 輸出false
str1.equals(str2) 輸出true
而如果這樣宣告
String str1="a";
String str2="a";
str1==str2 輸出true
str1.equals(str2) 輸出true
這是因為 equals 方法本來也是比較引用的字串類在實現的時候重寫了該方法。
第一種宣告方法等於是聲明瞭兩個物件,用’==‘比較是時候比較的是引用輸出的是false 由於他們的值相同用equals的時候就比較的是值了,輸出true。
第二種情況不是因為比較有與第一種有差異,而是因為宣告有差異,第二種宣告方法在宣告的時候有堆或堆疊 共用的現象,也就是說 在宣告的時候如果如果宣告為類屬性他會檢查在堆疊中有沒有與現在宣告的是相同結構的字串。如果有就直接將地址指向已有記憶體地址。宣告在方法內部的區域性變數原理一樣只不過他是堆疊共享。