刚才看一朋友的题第一个是这个
String s1 = “aaa”;
String s2 = “aaa”;
String s3 = new String(“aaa”);
String s4 = new String(“AAA”);
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.equals(s3));
怎么s1==s2会是真,做完结果也还真是true不是S1在堆里创建一个对象后S2又在堆里创建一个对象啊?
S1和S2这2个对象的引用怎么会相等????
虽然都是创建同样的对象对象内容应该相等可是这==不是比的是引用么??这是什么原因?
就算是把"aaa"再次复值给S2也不应该2个引用相等吧???
理解透彻的兄弟帮忙说说谢了
String s1 = “aaa”;
String s2 = “aaa”;
String s3 = new String(“aaa”);
String s4 = new String(“AAA”);
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.equals(s3));
怎么s1==s2会是真,做完结果也还真是true不是S1在堆里创建一个对象后S2又在堆里创建一个对象啊?
S1和S2这2个对象的引用怎么会相等????
虽然都是创建同样的对象对象内容应该相等可是这==不是比的是引用么??这是什么原因?
就算是把"aaa"再次复值给S2也不应该2个引用相等吧???
理解透彻的兄弟帮忙说说谢了
String s2 = “aaa”;
s1和s2引用的是同一个对象,即栈中的"aaa"
String s1 = “aaa”;
这种形式来得到一个String,那么会现在虚拟机中找是不是已经有这个实例