代码之家  ›  专栏  ›  技术社区  ›  Jérôme

用Java演示字符串比较

  •  7
  • Jérôme  · 技术社区  · 16 年前

    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

    但我得到的结果是: same strings !

    浏览互联网时我发现一些Java实现会优化上面的代码,以便 s1 s2 实际上引用同一个字符串。

    == 在Java中比较字符串(或对象)时的运算符?

    3 回复  |  直到 16 年前
        1
  •  17
  •   tangens    16 年前

    s1 s2

    String s1 = new String( "Hello" );
    String s2 = new String( "Hello" );
    

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

        2
  •  2
  •   Bart Kiers    16 年前

    那么,在Java中比较字符串(或对象)时,如何使用==操作符来演示这个问题呢?

    这里有一个方法:

    String s = "ab";
    String t = new String("ab");
    System.out.println(s == t); // false
    

    Integer s = -128;
    Integer t = -128;
    System.out.println(s == t);
    

    将打印 true

    Integer s = -129;
    Integer t = -129;
    System.out.println(s == t);
    

    印刷品 false

        3
  •  0
  •   Mitali Jain    11 年前

    JAVA在堆空间中维护一个字符串池,如果可能的话,它会尝试对相同的值进行多个引用。

       String s1 = new String ("Hello");
       String s2 = new String ("Hello");
    

    它会给你输出:“不同的字符串”。'new'关键字创建一个新的对象引用,而不给new将首先检查字符串池是否存在。