java - Java中与逻辑运算符的字符串比较

标签 java string-comparison

当比较两个字符串时,我被告知我们不应该使用逻辑运算符 (==)。我们应该使用 String.equals(String) 进行比较。但是,我看到以下代码符合并使用最新的 JDK(1.6_23) 打印“Hello Friend”。我尝试四处搜索,但找不到任何引用。这是从什么时候开始的?

public class StringComp{
public static void main(String args[]){
        String s = "hello";
        if(s=="hello"){
                System.out.println("Hello Friend");
        }else{
                System.out.println("No Hello");
        }
    }
}

最佳答案

你不应该使用 == 因为它做了你想不到的事情。

在这种情况下,“hello”被保存(阅读字符串实习),所以它与你的 stirng 是同一件事是“巧合”。

== 检查两件事是否完全相同,而不是检查它们是否具有相同的内容。这是一个非常大的差异,一些意外的(虽然可以解释)“假阳性”不是使用这种方法的理由。

只需使用 equals 进行字符串比较。

来自这个网站的一个例子: http://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/

String a = new String ("a");
String b = new String ("a");
System.out.println (a == b);

它返回false,而下面的代码返回true。

String a = new String ("a");
String b = new String ("a");
System.out.println (a.equals(b));

关于java - Java中与逻辑运算符的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744953/

相关文章:

c# - String.StartsWith 使用 StringComparison.OrdinalIgnoreCase 的性能

javascript - 字符串比较 : something identical of JavaScript's localeCompare in PHP?

java - 注释如何防止数组参数的突变?

java - 将 Kotlin 转换为 Java

java - BufferedReader - 读取所有字符(不是行)

java - JFileChooser 自定义 - 将渐变绘制设置为 JFilechooser

java - 从文件读取数据后尝试创建 HashMap。获取空值。我究竟做错了什么?

C#如何比较两个字符串并指出哪些部分不同

java - java中的null或空字符串比较?或者是其他东西?

Java - 如何从句子的ArrayList中获取每个单词