簡析java中string的比較

簡析一下java中的String的比較

雖然這很簡單,但還是讓不少新手困惑。

說明一下 ==和equals 的區別。

==比較的是引用,就是地址,而equals是比較值,比較值的話,是值相同就返回true,而引用的話,值相同不一定相等,只有引用的地址相同纔會相等,但是引用相同,值一定相等。

下面舉例說明一下

String str= "hello";
String str1 ="hello";
Boolean b1= str==str1?true:false;
Boolean b2=srt.equals(str1)?true:false;
System.out.println(b1+ " "+b2);
結果是true ,true。

說明一下java聲明String的機制,在聲明過程中,沒有使用new關鍵字的話,它會在常量池中去找,是否有hello這個字符串,如果有,那麼那就會指向這個引用,也就是說不會創建新的常量,如果沒找到的話纔會創建一個新的常量hello ,在這裏第二個字符串沒有使用new關鍵字,且有hello字符串常量的存在,所以str1的引用和str相同

String str= "hello";
String str1 =new String("hello");
Boolean b1= str==str1?true:false;
Boolean b2=srt.equals(str1)?true:false;
System.out.println(b1+ " "+b2);



結果是false ,true

使用new關鍵字的話,它不管常量池中是否有hello這個字符串,會直接聲明一個新的引用,分配新的地址。所以在這裏str==str1返回false

本人才疏學淺,如果疑問或有不足之處都歡迎溝通。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章