Java字符串比較
阿新 • • 發佈:2017-06-20
vps 返回 str lan 區別 創建 == 空字符串 tps
問題:判斷一個字符串s是否為空字符串 “”
錯誤方法:s!=“”或s==“”
字符串s為空字符串時,s!=“”還是返回true
==與equals的區別
結論:字符串是對象類型,不能用==判斷是否相等
equals()比較的是對象的內容(區分字母的大小寫格式),但是如果使用“==”比較兩個對象時,比較的是兩個對象的內存地址,所以不相等。即使它們內容相等,但是不同對象的內存地址也是不相同的。
字符串首先是一個對象。
舉個例子:
String str0 = "abc";
String str1 = new String("abc");
當執行String str0 =”abc”;時,JVM會在棧中創建三個char型的值 ’a’ , ’b’ 和 ’c’ ,然後在堆中創建一個String對象,它的值(value)是剛才在棧中創建的三個char型值組成的數組{ ’a’ , ’b’ , ’c’ },最後這個新創建的String對象的值”abc”會被添加到字符串池中。如果我們接著執行String str1=new String(”abc”);代碼,由於”abc”已經被創建並保存於字符串池中,因此JVM只會在堆中新創建一個String對象,但是它的值(value)是共享前一行代碼執行時在字符串池中的 ” abc ” ;
Java字符串比較