zoukankan      html  css  js  c++  java
  • Equals方法与“==”区别

    一:“==”

    基本数据类型:比较值是否相等。

    引用数据类型:比较两个引用是否指向同一个对象。

    /**
     * equals与“==”区别
     * 2014-4-13
     * @author Administrator
     *
     */
    public class demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s1="123";
            String s2="123";
            if(s1==s2)
                System.out.println("s1=s2");
            else
                System.out.println(s1!=s2);
        }
    }

    运行结果:

    s1=s2

    1创建一个引用s1存储在栈中

    2在常量池中查看是否已有字符串”123”,若存在,直接让s1指向已有字符串”123“,若不存在,创建新的字符串”123”,并让s1指向”123”

    3重复1,2步骤创建s2=”123”

    /**
     * equals与“==”区别
     * 2014-4-13
     * @author Administrator
     *
     */
    public class demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s1=new String("123");
            String s2=new String("123");
            if(s1==s2)
                System.out.println("s1=s2");
            else
                System.out.println("s1!=s2");
        }
    }

    运行结果:

    s1!=s2

    1创建一个引用s1存储在栈中,

    2创建一个新的对象存储在堆中,将引用s1指向对象

    3重复1,2步骤。(new的方式是生成不同的对象。每一次生成一个。)

    /**
     * equals与“==”区别
     * 2014-4-13
     * @author Administrator
     *
     */
    public class demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s1="123";
            String s2=new String("123");
            if(s1==s2)
                System.out.println("s1=s2");
            else
                System.out.println("s1!=s2");
        }
    }

    运行结果:

    s1!=s2

    二:equals()方法

    在Object超类中,基本数据类型与引用数据类型都是比较是否指向同一个对象

    在String类中,比较两个值是否相同

    /**
     * equals与“==”区别
     * 2014-4-13
     * @author Administrator
     *
     */
    public class demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s1="123";
            String s2="123";
            if(s1.equals(s2))
                System.out.println("s1 equals s2");
            else 
                System.out.println("s1 not equals s2");
            
        }
    }

    运行结果:

    s1 equals s2
    /**
    
    * equals与“==”区别 * 2014-4-13 *
    @author Administrator * */ public class demo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String s1=new String("123"); String s2=new String("123"); if(s1.equals(s2)) System.out.println("s1 equals s2"); else System.out.println("s1 not equals s2"); } }

    运行结果:

    s1 equals s2
    /**
    
    
     * equals与“==”区别
     * 2014-4-13
     * @author Administrator
     *
     */
    public class demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s1="123";
            String s2=new String("123");
            if(s1.equals(s2))
                System.out.println("s1 equals s2");
            else 
                System.out.println("s1 not equals s2");
            
        }
    }

    运行结果:

    s1 equals s2

    三:String的intern()方法

    /**
     * equals与“==”区别
     * 2014-4-13
     * @author Administrator
     *
     */
    public class demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String s1="123";
            String s2=new String("123");
            s2 = s2.intern();
            if (s1 == s2)
                System.out.println("s1 == s2");
            else
                System.out.println("s1 != s2");
            if(s1.equals(s2))
                System.out.println("s1 equals s2");
            else 
                System.out.println("s1 not equals s2");
    
        }
    }

    运行结果:

    s1 == s2
    s1 equals s2

    java.lang.String的intern()方法"abc".intern()方法的返回值还是字符串"123"

    返回过程也有判断常量池中是否存在相同的字符串,若存在,则不重新创建.

  • 相关阅读:
    水晶报表关于System.Web.Extensions报错的问题
    个人下一步学习计划
    一个老程序员对数据库的一点纠结
    Visual SourceSafe权限配置记录
    SQL SERVER 2008代码折叠小技巧
    用命令行自动备份数据库到其他服务器
    CrystalReports 2008序列号留档
    ····
    C语言中的static
    页面自动刷新的几种方法
  • 原文地址:https://www.cnblogs.com/shangshicc/p/3662928.html
Copyright © 2011-2022 走看看