Java中"equals"和"=="的区别

一,equals

它是一个对象的 一个方法

只对对象(引用类型)有用

比较两个引用变量是否只向堆上同一个对象

 

二,==

它是一个运算符

数值类型:比较的是两个数值的字节字节是否相等

引用类型:判断两个引用是否指向同一个对象

注:

equals 方法不能用于基本数据类型的变量,如果没有对 equals 方法进行重写,则比较的是引用类型的变
量所指向的对象的地址。

 

三,代码验证

public class TestEquals {

    public static void main(String[] args) {
        Integer i = 2;
        int j = 2;

        System.out.println(i==j);//true
        System.out.println(i.equals(j));//true

        Dog dog1 = new Dog();
        Dog dog2 = new Dog();
        Dog dog3 = dog1;

        System.out.println("===========");
        System.out.println(dog1==dog2);//false
        System.out.println(dog1==dog3);//true
        System.out.println(dog2==dog3);//false

        System.out.println("===========");
        System.out.println(dog1.equals(dog2));//false
        System.out.println(dog1.equals(dog3));//true
        System.out.println(dog2.equals(dog1));//false

        String s1 = "hello";
        String s2 = "hello";

        System.out.println("===========");
        System.out.println(s1==s2);//true
        System.out.println(s1.equals(s2));//true

    }

}

class Dog{

}

 

posted @ 2019-08-07 22:45  Noperx  阅读(138)  评论(0编辑  收藏  举报