gpt4 book ai didi

java - 为什么有时不能使用 "=="关系运算符代替 .equals() 方法来比较对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:53 25 4
gpt4 key购买 nike

<分区>

我在一本书上查了一下,这本书的解释通常比网站更透彻。

以此为例:

if (nickname == "Bob")

只有当 nickname 指的是同一个 String 对象时,条件才为真。

这里有一句话我觉得很迷惑,谁能解释一下为什么会这样:

For efficiency, Java makes only one string object for every string constant.

书上指出,组装对象“Bob”的方式也会影响条件是否为真,这让我最困惑。

例如:

String nickname = "Bob";
...
if (nickname == "Bob") //TRUE

但是如果“Bob”是从 .substring() 方法创建的,条件将为 FALSE。

String name = "Robert";
String nickname = name.substring(0,3);
...
if (nickname == "Rob")//FALSE

为什么会这样?

编辑:在书的解释的最后,我发现了一句话也让我很困惑:

Because string objects are always constructed by the compiler, you never have an interest in whether two strings objects are shared.

我们编写的所有内容不都是由编译器构建的吗?

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