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

是什么使引用比较(==)对Java中的某些字符串有效?

是什么使引用比较(==)对Java中的某些字符串有效?

慕神8447489 2019-12-13 11:10:48
我有以下几行代码来比较String。str1不等于str2,这是可以理解的,因为它比较了对象引用。但是,为什么s1等于s2?String s1 = "abc";String s2 = "abc";String str1 = new String("abc");String str2 = new String("abc");if (s1==s2)    System.out.println("s1==s2");           else    System.out.println("s1!=s2");if (str1==str2)    System.out.println("str1==str2");           else    System.out.println("str1!=str2");if (s1==str1)    System.out.println("str1==s1");         else    System.out.println("str1!=s1");输出:  s1==s2  str1!=str2  str1!=s1 
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

s1和s2是字符串文字。创建新的String文字时,编译器首先检查String池中是否存在任何表示该文字的文字。如果存在,则编译器返回该文字,否则编译器将创建一个新的。

创建String时s2,编译器s1将从池中返回String ,因为之前已经创建了它。这就是为什么s1s2相同的原因。这种行为称为实习


查看完整回答
反对 回复 2019-12-14
  • 1 回答
  • 0 关注
  • 399 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信