• Java String比较


    代码

    @Slf4j
    public class StringCompareDemo {
        public static void compare() {
    
            String a = "1";
            String b = "1";
            log.info("
    String a = "1";
    " +
                    "String b = "1";
    " +
                    "a == b ? {}", a == b); //true
    
            String c = new String("2");
            String d = new String("2");
            log.info("
    String c = new String("2");
    " +
                    "String d = new String("2");" +
                    "c == d ? {}", c == d); //false
    
            String e = new String("3").intern();
            String f = new String("3").intern();
            log.info("
    String e = new String("3").intern();
    " +
                    "String f = new String("3").intern();
    " +
                    "e == f ? {}", e == f); //true
    
            String g = new String("4");
            String h = new String("4");
            log.info("
    String g = new String("4");
    " +
                    "String h = new String("4");
    " +
                    "g equals h ? {}", g.equals(h)); //true
        }
    }

    执行结果

    String a = "1";
    String b = "1";
    a == b ? true
    ----
    String c = new String("2");
    String d = new String("2");c == d ? false
    
    -----
    String e = new String("3").intern();
    String f = new String("3").intern();
    e == f ? true
    ---
    
    
    String g = new String("4");
    String h = new String("4");
    g equals h ? true

    分析

    第一个相等,是因为 Java 的字符串驻留机制,直接使用双引号声明出来的两个 String 对象指向常量池中的相同字符串。

    第二个不相等,是因为new 出来的两个 String 是不同对象,引用当然不同,所以得到 false 的结果。

    第三个相等,是因为使用 String 提供的 intern 方法也会走常量池机制,所以同样能得到 true。

    第四个相等,是因为string重写了equals,equals内部是比较的是字符串的值。

  • 相关阅读:
    最优贸易 NOIP 2009 提高组 第三题
    Think twice, code once.
    luogu P1378 油滴扩展
    codevs 1002 搭桥
    codevs 1014 装箱问题 2001年NOIP全国联赛普及组
    洛谷P2782 友好城市
    洛谷P1113 杂务
    [HDU1848]Fibonacci again and again
    [POJ2420]A Star not a Tree?
    [SCOI2010]生成字符串
  • 原文地址:https://www.cnblogs.com/Brake/p/12716574.html
Copyright © 2020-2023  润新知