public class TestStringVariableAndConstants {
public static void main(String[] args) {
String a = "abc";
String b = "ab";
String c = "c";
String q = b+c;
String z = b+"c";
System.out.println(a==q);//false
System.out.println(a==z);//false
String d = "def";
String e = "d"+"ef";
System.out.println(d==e);//true
}
}
java中的==对于引用类型比较的是地址。
1.当+号一边存在字符串变量时,则先回寻找字符串常量池中是否存在已经拼接好的字符串。
如果不存在,则会在里面创建一个新的
然后在堆中创建一个指向这个常量的对象。
2.当+号两边都是字符串常量时,则先回寻找字符串常量池中是否存在已经拼接好的字符串。
如果不存在,则会在里面创建一个新的
不会在堆中创建新的对象
关联String比较的文章:请转至:
String比较