面试题 equals和==的区别

在java中,equals和 == 的最大区别就是 (==)是运算符,equals是方法

1.关系操作符==

==可以使用在基本数据类型变量和引用数据类型变量中

1.1基本数据类型变量

当使用==来判断两个变量是否相等的时候,如果两个变量是基本类型变量,且都是数值类型,则只要两个变量的值相等就返回true。

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

        System.out.println(i == j);
    }

运行结果:true

1.2引用数据类型变量

当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。

public class Test {
    public static void main(String[] args) {
        Person per1 = new Person("小甘", 25);
        Person per2 = new Person("小杨", 30);

        System.out.println(per1 == per2);
    }
}


class Person{
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
}

运行结果:false

2.equals()只适用引用数据类型

对于引用数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的

 public static void main(String[] args) {
        Person per1 = new Person("小甘", 25);
        Person per2 = new Person("小杨", 30);
        
        System.out.println(per1.equals(per2));
    }
}


class Person{
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

运行结果:false

总结:

1.对于==关系操作符,比较的是变量在内存中指向的地址是否一致,基础数 据类型由于存储的值都在栈内,且值是共享的,所以比较的就是值是否一 致,引用类型比较的就是引用的地址是否一致。

2.对于equals方法,equals不能作用与基本数据类型
如果在类内部没有对其进行重写,则含义同==相同,比较的是变量引用的地址是否一致。
诸如String、Date、File等类在内部对于equals方法进行了重写,因此比较的还是变量的值是否一致。

posted @ 2022-03-13 16:16  小甘同学1997  阅读(99)  评论(0)    收藏  举报