为了账号安全,请及时绑定邮箱和手机立即绑定

s1和s3是不同对象所以返回false,那s1和s2也是不同对象阿,为什么就返回true呢

正在回答

4 回答

创建字符串对象有2种方法:

1、String str1 = "慕课网";
   String str2 = "慕课网";
2、String str3 = new String("慕课网");
   String str4 = new String("慕课网");

在第一种情况下:因为"慕课网"为常量字符串,多次出现时被编译器优化,只创建了一个对象。所以s1和s2内存地址相同。

而在第二种情况下,因为是new()产生的,所以每次都会产生一个新的对象,所以s1和s3是不同对象。

0 回复 有任何疑惑可以回复我~

课程里的解析语句有解释,S1和s2是多次出现的字符常量,JAVA编译时只创建一个!

0 回复 有任何疑惑可以回复我~

在这里,s1和s2是同一个对象吧

0 回复 有任何疑惑可以回复我~

因为这里s1和s2是当常量来处理的,就相当于引用一个对象。s3则不同,是new了一个新对象所以会有这样的结果

1 回复 有任何疑惑可以回复我~
#1

抗货产品汪

String s1="qwe"; String s2="qwerty"; s1=s1+"rty"; System.out.print(s1==s2); 按理来说应该是true 但是false 为什呢呢
2014-10-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409787    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程
意见反馈 帮助中心 APP下载
官方微信