• 目录

== 和 equals() 的区别

阅读量: 221 编辑

== 和 equals() 的区别

== 是比较值是否相同

  • 基本类型:比较的是值是否相同;

  • 引用类型:比较的是引用(指向的地址值)是否相同;

equals() 是比较“内容”是否相同

  • 只用于引用类型,调用的是Object的equals()方法

  • equals()方法可以重写

public static void main(String[] args) {

        String s1 = "hello"; // "hello"在常量池中,s1指向"hello"
        String s2 = "hello"; // s2 同样指向常量池中的 "hello"

        System.out.println(s1 == s2);         //s1和s2指向的地址是一样的,所以是true
        System.out.println(s1.equals(s2));  //二者里面的内容都是"hello",所以是true

        String s3 = new String("hello");     // 存放于堆中,另外一个地址
        System.out.println(s1 == s3);         //地址值不一样,所以是false
        System.out.println(s1.equals(s3));  //内容是一样的,所以是true

        String s4 = new String("hello");     // 存放于堆中,一个新的地址
         System.out.println(s3 == s4);        //地址值不一样,所以是false
        System.out.println(s3.equals(s4));  //内容是一样的,所以是true

}
  • 目录