gpt4 book ai didi

java - 使用等价运算符还是 equals() 方法来比较字符串的内容更合适?

转载 作者:行者123 更新时间:2023-12-01 18:46:20 24 4
gpt4 key购买 nike

我正在阅读有关 interned strings 的概念:

String s1 = "Hi";
String s2 = "Hi";
String s3 = new String("Hi");
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
System.out.println(s1.equals(s3)); //true

String是Java中的一个对象,但是编译器允许我们使用文字来分配给String引用变量,而不是要求我们使用new运算符,因为字符串在编程中无处不在。使用文字进行赋值会创建 interned string 。所有具有相同文字的内部字符串都指向内存中的相同空间,因此允许使用等效运算符。

然而,这让我想知道:使用 equals() 不是更合适吗?比较两个字符串引用变量的方法,假设在 Java 中字符串是对象(而不是像其他语言那样的数组),并且应该使用 equals() 比较对象的内容,如 ==关于对象的运算符只告诉我们它们指向内存中的同一位置?

或者它不是更合适,因为驻留字符串的概念清楚地表明,如果一个字符串共享相同的文字,则它们只能与另一个字符串等效( == )?

如果更合适的话,人们通常使用 equals()不管怎样,还是被认为是矫枉过正?

最佳答案

是的equals是用于比较字符串对象内容的方法。使用==我们只能比较两个引用是否指向相同的内存位置。但是使用 equals 可以检查两个引用是否包含相同的字符串内容,无论它们是否位于相同的内存位置。从逻辑上讲,当您尝试比较两个字符串时,您必须寻找比较这些字符串的内容,而不是它们的内存位置。

作为一种实践或几乎所有地方,字符串 equals 方法都用于字符串比较,而不是 ==

关于java - 使用等价运算符还是 equals() 方法来比较字符串的内容更合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621854/

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