本帖最后由 翁游龙 于 2012-7-4 16:04 编辑
第一次见到这样奇怪的问题,以下有两个类StringJoinTest和StringJoinTest02,
程序如下:
类StringJoinTest:
public class StringJoinTest{
public static void main(String[] args){
String s1 = "HeimaJava";
String s2 = "Heima" + "Java";
System.out.println(s1 == s2); //true
//定义两个字符串
String str1 = "Heima";
String str2 = "Java";
//将str1和str2进行连接运算
String s3 = str1 + str2;
System.out.println(s1 == s3); //false
}
}
类StringJoinTest02:
public class StringJoinTest02{
public static void main(String[] args){
String s1 = "HeimaJava";
String s2 = "Heima" + "Java";
System.out.println(s1 == s2); //true
//定义两个字符串
final String str1 = "Heima";
final String str2 = "Java";
//将str1和str2进行连接运算
String s3 = str1 + str2;
System.out.println(s1 == s3); //true
}
}
问题:两个类中同样是比较s1和s3的地址池,为什么使用了final修饰后的字符串
判断打印的是结果为true呢?
|