22-"=="运算符 和 equals()方法的区别

发布时间 2023-09-05 10:41:10作者: 马铃薯1

基本数据类型:byte[1]、short[2]、int[4]、long[8]、float[4]、double[8]、char[2]、boolean[1]

引用类型:类(class)、接口(interface)、数组([])

"==" 运算符

"=="运算符是一个比较运算符,既可以判断基本数据类型,又可以判断引用类型

1) 当判断基本数据类型时,判断的是值是否相等

2) 当判断引用类型时,判断的是引用地址是否相等,即判断是否是同一个对象

equals()方法

1) 只适用于引用数据类型

2) Object类中equals()方法的源码

public boolean equals(object obj) {

  return (this == obj); //this是指类的当前实例

}

2) 对于像String 、Data 、File 、包装类等都重写了 Object类中equals()方法,重写以后的方法比较的不是两个引用地址是否相同,而是比较的两个对象的“实体内容”是否相同

public class Test2 {
    public static void main(String[] args) {
        //创建新的String对象
        String s1 = new String("1234");
        String s2 = new String("1234");
        //"=="运算符判断引用类型时,判断的是地址是否相等;equals方法判断的是内容是否相等
        System.out.println(s1 == s2); //false,s1和s2创建的是两个新的对象
        System.out.println(s1.equals(s2)); //true

        String s3 = s1;
        System.out.println(s3 == s1); //true,s3引用的是s1的地址
        System.out.println(s3.equals(s1)); //true

        //将字符串"1234"放在常量池中
        String s4 = "1234";
        String s5 = "1234";
        //在常量池中的字符串,地址是相同的
        System.out.println(s4 == s5); //true
        System.out.println(s4.equals(s5)); //true
    }
}

 

"==" 运算符和 equals()方法的区别

a) "==" 运算符判断基本类型时,就是比较值;判断引用类型时就是比较引用地址,即在内存中的位置是否相同(完全相同)

b) equals()方法,只能判断引用类型,比较两个对象的“实体内容”是否相同,即对象的内容是否相同(内容相同)