zoukankan      html  css  js  c++  java
  • 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内部是比较的是字符串的值。

  • 相关阅读:
    jsp int转String or String转int 方法
    log4j详细使用教程
    SQL 查询当天,本月,本周的记录
    1012Linux流编程的一些知识点
    myeclipse过期以后提示过期以后怎么办?!
    mysql常用命令
    Myeclipse文件没出错,但是项目上显示有错的解决办法
    java的一些命名规范吧
    mysql 按照时间查询
    struts1.x和struts2.x之间的一些区别
  • 原文地址:https://www.cnblogs.com/Brake/p/12716574.html
Copyright © 2011-2022 走看看