Java中的equals和==的差别

==对基本数据类型比较的是值,对引用类型比较的是地址

equals()比较的是对象是否是同一个对象,即两个对象的地址是否一致;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int n=3;
        int m=3;
        String str1 = "hello";
        String str2 = "hello";
        System.out.println("基本数据类型的 ==  判定:"+(n==m));//判断数据
        System.out.println("引用数据类型的 == 判定"+(str1==str2));//判断地址



        String str3 = new String("hello");
        String str4 = new String("hello");
        System.out.println("对象的 == 判定:"+(str3 == str4));//判断地址
        System.out.println("对象的 equals() 判定"+str3.equals(str4));//判断数据

        str4 = str3;
        System.out.println("对象赋值后的 == 判定"+( str3 == str4 ) );
        System.out.println("对象的 equals() 判定"+str3.equals(str4));
    }

}

结果如下:

基本数据类型的 ==  判定:true
引用数据类型的 == 判定true
对象的 == 判定:false
对象的 equals() 判定true
对象赋值后的 == 判定true
对象的 equals() 判定true

猜你喜欢

转载自blog.csdn.net/qq_34834846/article/details/81431103