String字符串相等判斷


== :比較的是內存地址值
equals: 比較的是值,對象的equals()可以被重寫

java中字符串的比較:==

String a="abc";
String b="abc"

那么a==b將返回true。因為在java中字符串的值是不可改變的,相同的字符串在內存中只會存 一份,所以a和b指向的是同一個對象;

String a=new String("abc"); 
String b=new String("abc");

那么a==b將返回false,此時a和b指向不同的對象。

用equals方法比較的是字符串的內容是否相同

String a=new String("abc"); 
String b=new String("abc");
 a.equals(b);

將返回true。

如果是
String s1 = “abc”;
String s2 = “a”;
String s3 = “bc”;
String s4 = s2 + s3;
System.out.println(s1 == s4);
A:false,因為s2+s3實際上是使用StringBuilder.append來完成,會生成不同的對象


String s1 = “abc”;
final String s2 = “a”;
final String s3 = “bc”;
String s4 = s2 + s3;
System.out.println(s1 == s4);
A:true,因為final變量在編譯后會直接替換成對應的值,所以實際上等於s4=”a”+”bc”,而這種情況下,編譯器會直接合並為s4=”abc”,所以最終s1==s4。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM