gpt4 book ai didi

java - 与字符串实习相关

转载 作者:太空狗 更新时间:2023-10-29 22:32:49 24 4
gpt4 key购买 nike

public static void main(String[] args) {

String a = new String("lo").intern();
final String d = a.intern();
String b = "lo";
final String e = "lo";
String c = "Hello";
System.out.println(b==a);//true
System.out.println(d==a);//true
System.out.println(e==a);//true
System.out.println(c=="Hel"+a); //why is this false? when e==a is true
System.out.println(c=="Hel"+d); //why is this false?
System.out.println(c=="Hel"+b); //why is this false?
System.out.println(c=="Hel"+e); //this is true

}

这导致

true
true
true
false
false
false
true

表达式 e==a 为真意味着相同的引用。那么为什么最后一个表达式为真而倒数第 4 个表达式即 c== "Hel"+a 为假?

最佳答案

表达式

"Hel" + a

不是编译时常量。实际上,它编译为:

new StringBuilder().append("Hel").append(a).toString()

(或类似的)在运行时创建一个新的 String 对象。

但是,因为 e 是最终的,编译器可以确定 "Hel"e 的串联> 的值是一个常量值,因此对其进行实习。

关于java - 与字符串实习相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27701404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com