gpt4 book ai didi

java - 比较对象时使用==

转载 作者:搜寻专家 更新时间:2023-11-01 01:04:10 24 4
gpt4 key购买 nike

最近在一次工作面试中,我被问到以下问题(针对 Java):

给定:

String s1 = "abc";
String s2 = "abc";

什么是返回值

(s1 == s2)

我回答它会返回 false,因为它们是两个不同的对象,== 是内存地址比较而不是值比较,并且需要使用 .equals() 来比较 String 对象。然而,有人告诉我,虽然 .equals(0 方法是正确的,但该声明仍然返回 true。我想知道是否有人可以向我解释为什么它是真的,但为什么我们仍然在学校被教导使用 equals() ?

最佳答案

字符串 常量 由您的 JVM 驻留(根据 here 规范要求):

All literal strings and string-valued constant expressions are interned. String literals are defined in §3.10.5 of the Java Language Specification

这意味着编译器已经创建了一个表示字符串"abc"的对象,并设置了s1s2指向同一个内部对象。

关于java - 比较对象时使用==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450679/

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