String a="ab";
String b="ab";
System.out.println(a==b);
String c="a";
String d=c+"b";
System.out.println(a==d);
打印结果为:true
false
这里的“ab”是字符串直接量,在java的语法中是对象,java虚拟机为了提高内存存储效率,同样序列的字符串直接量为一个实例,所以其实引用变量a和b其实是指向同一个实例,地址也就相同。引用变量比较的是地址,所以第一个打印出来为true。
由于引用变量a和d指向的地址不同,所以比较结果为false。