Java里的equals和==的区别是否equals是比较内容,==是比较地址的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java里的equals和==的区别是否equals是比较内容,==是比较地址的?相关的知识,希望对你有一定的参考价值。

一般对象equals是比较地址,equals时地址一样,值也一样:java 对象继承自 Object类,一般对象调用的都是Object的equals方法,查看源码发现:Object逻辑就是的就是==。
String 也是继承Object,但是重写了equals方法,String的equals是比较了值得,这个比较特殊。
参考技术A ==比较的栈的内容 equals比较堆的内容
当两个整形变量比较时用== 因为整形变量是放到栈里的 所以用==可以比较
而比较字符串是用equals 因为String类型的数据在栈中存放的是引用 在堆里才是村发哦String的数据的
参考技术B public class bijiao
public static void main(String[] args)
String str1 = "hello world";
String str2 = new String("hello world");
String str3 = new String("hello world");
System.out.println("str1 == str2 ??"+(str1==str2));
System.out.println("str2 == str3 ??"+(str2==str3));
System.out.println("str1.equals(str2) ??"+str1.equals(str2));
System.out.println("str2.equals(str3) ??"+str2.equals(str3));



结果如下:
str1 == str2 ??false -----
str2 == str3 ??false ------ 由第一个和第二个结果来看。== 号比较的是内存地址。。。
str1.equals(str2) ??true ---------
str2.equals(str3) ??true --------- 由第三个和第四个来看,equals()比较的是字符串的内容。
参考技术C string类重写了equals方法,当参数为相同字符串序列时返回的才是true 参考技术D 反了

java equals 和 == 区别

  1. equals 可以重写, == 不可重写
  2. equals 是方法

    equals 是 Object 的方法。

    基本作用:判断两个对象是否为引用

    public class Object {
        // 省略部分代码
       public boolean equals(Object obj) {
            return (this == obj);
        }
    }


    因为 java 中所有类都继承自 Object,所以任何一个类都有默认的 equals 方法,但是只能判断两个对象是否引用。

    可根据自己的需求重载 equals 方法。例如 String 类就重写了 equals 方法。


     

  3. == 是二元操作符

    对于基本数据类型,比较的是值是否相等。

    对于对象:基本功能:判断两个对象是否为引用


    为什么?

    看 object 源码:

    public class Object {
        // 省略部分代码
       public boolean equals(Object obj) {
       // 使用 == 判断是否为同一个对象 return (this == obj); } }

      



基本功能:判断两个对象是否为引用

以上是关于Java里的equals和==的区别是否equals是比较内容,==是比较地址的?的主要内容,如果未能解决你的问题,请参考以下文章

Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还 是 equals()?它们有何区别?

[转]Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还 是 equals()?它们有何区别?

equals和==的区别

[转]Java中==和equals的区别,equals和hashCode的区别

Java 中 equals 和 == 的区别

java的equals和contains的区别