==、equals区别 | java学习笔记

做一些java基础知识的记录

java基本类型:byte short int long float double char boolean(指向具体的数值)
java引用类型:类 接口 数组等。指向的不是具体的数值,而是指向了对象的地址。

==

用于判断基本类型的数值是否相等;
用于判断引用类型是否指向同一个地址、判断是否为同一个对象。

equals

在这里插入图片描述
==、equals区别 | java学习笔记_第1张图片

如上图所示,为java源码。
Object类中,equals()用于判断两者地址是否相等;
Object的子类(Integer、String、Double……)中,equals()用于判断两者的值(两者的内容)是否相同。
equals方法可以重写,可自定义判断条件。

练习

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 1;
        int c = 2;
        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println("———————.—————————");

        String astr = "1234";
        String bstr = "1234";
        String cstr = "12";
        System.out.println(astr == bstr);//关于常量,相同的赋值,则会指向同一个对象。
        System.out.println(astr == cstr);
        System.out.println("______.._________");

        Animal a1 = new Animal();
        Animal a2 = new Animal();
        Animal a3 = a1;
        System.out.println(a1 == a2);
        System.out.println(a1 == a3);
        System.out.println("________..._______");

        String str1 = "123";
        String str2 = "123";
        String str3 = "123456";
        System.out.println(str1.equals(str2));
        System.out.println(str1.equals(str3));
        System.out.println("_______-________");

        Double d1 = 1.0;
        Double d2 = 1.0;
        Double d3 = 2.0;
        System.out.println(d1.equals(d2));
        System.out.println(d1.equals(d3));
        System.out.println("________--________");

        Animal ani1 = new Animal("cat");
        Animal ani2 = new Animal("cat");
        Animal ani3 = ani1;
        Animal ani4 = new Animal("dog");
        System.out.println(ani1.equals(ani2));
        System.out.println(ani1.equals(ani3));
        System.out.println(ani1.equals(ani4));
        System.out.println("________^^__________");

        String string="123";
        System.out.println(string=="123");
        System.out.println(string=="asd");
        System.out.println(string.equals("123"));
        System.out.println(string.equals("asd"));
    }
}

class Animal {
    private String name;

    public Animal() {
        String name = "animal's name";
    }

    public Animal(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof Animal)) {
            return false;
        }
        Animal animal = (Animal) o;
        return Objects.equals(this.getName(), animal.getName());
        //this指向当前对象
    }
}

运行结果:

true
false
———————.—————————
true
false
______.._________
false
true
________..._______
true
false
_______-________
true
false
________--________
true
true
false
________^^__________
true
false
true
false

参考资料

https://blog.csdn.net/nxj_climb/article/details/113175127参考了该文章及其评论区

https://www.bilibili.com/video/BV1fh411y7R8?p=319&vd_source=07ed824bba84f399accbac1be9f9f505

你可能感兴趣的:(java,java,笔记)