String字符串相等判断
生活随笔
收集整理的這篇文章主要介紹了
String字符串相等判断
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
== :比較的是內(nèi)存地址值
equals: 比較的是值,對象的equals()可以被重寫
java中字符串的比較:==
String a="abc"; String b="abc"那么a==b將返回true。因為在java中字符串的值是不可改變的,相同的字符串在內(nèi)存中只會存 一份,所以a和b指向的是同一個對象;
String a=new String("abc"); String b=new String("abc");那么a==b將返回false,此時a和b指向不同的對象。
用equals方法比較的是字符串的內(nèi)容是否相同
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變量在編譯后會直接替換成對應(yīng)的值,所以實際上等于s4=”a”+”bc”,而這種情況下,編譯器會直接合并為s4=”abc”,所以最終s1==s4。
總結(jié)
以上是生活随笔為你收集整理的String字符串相等判断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试再也不怕问到HashMap(二)
- 下一篇: JVM8内存模型