java - 演示与 Java 的字符串比较

标签 java string comparison equals

我想用几行代码来演示,在 Java 中,要比较两个字符串 (String),您必须使用 equals() 而不是运算符 ==.

这是我试过的:

public static void main(String Args[]) {
   String s1 = "Hello";
   String s2 = "Hello";

   if (s1 == s2)
      System.out.println("same strings");
   else
      System.out.println("different strings");
}

我期待这个输出:different strings,因为通过测试 s1 == s2 我实际上是在比较两个引用(即地址)而不是对象的内容.

但我实际上得到了这个输出:相同的字符串!

浏览互联网我发现一些 Java 实现会优化上面的代码,这样 s1s2 实际上引用相同的字符串。

那么,在 Java 中比较字符串(或对象)时,如何使用 == 运算符演示问题?

最佳答案

编译器会根据您的情况进行一些优化,以便 s1s2 实际上是同一个对象。您可以使用

来解决这个问题
String s1 = new String( "Hello" );
String s2 = new String( "Hello" );

然后您有两个具有相同文本内容的不同对象。

关于java - 演示与 Java 的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612659/

相关文章:

objective-c - float 比较问题 objective-c

java - 在哪里设置空指针异常

java - 从我所有的 Controller 访问一个变量

swift - 传入从另一个 tableviewcontroller 接收到的字符串

sscanf() 中的字符指针

c++ - AlmostEqual2sComplement 实现不处理退化的情况

java - Dagger 2 : How to inject Map<Class<? extends Foo>, Provider<?扩展 Foo>>

java - 当事件数等于或超过 batchSize 时,为什么 Flume-NG HDFS sink 不写入文件?

python - 使用排列作为 key 对消息字符串进行解扰

algorithm - 我处理了指纹。我如何比较结果?