因为
s1 + s2不是 常量表达式
,由于
s1和
s2不是
final,因此其结果不会被插入,即创建另一个对象来表示它,因此引用比较产生
false。
JLS
3.10.5字符串文字:
使用String.intern方法,对字符串常量(或更常见的是常量表达式的值(第15.28节)的字符串)进行“ interned”,以便共享唯一的实例。
JLS
15.28常数表达式:
编译时常量表达式是表示原始类型或String的值的表达式,该值不会突然完成,并且仅使用以下内容组成:
- …
- 引用常量变量的简单名称(第4.12.4节)。
JLS
4.12.4定义了
final变量。
如果声明
s1和
s2为
final,
s3 == s5则为
true。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)