Java中 equals() 和 == 的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huoguang_/article/details/90340780

1、== 可以比较引用类型和基本数据类型

(1)如果比较基本数据类型,则直接比较其存储的 “值”是否相等

int a = 1;
int b = 1;
System.out.println(a == b);

结果:true

(2)如果比较引用类型,则比较的是所指向的对象的地址,与equals()相同

//定义一个类
class Name{
	String name;
	public Name(String name) {
		this.name = name;
	}
}

Name a = new Name("小明");
Name b = new Name("小明");
System.out.println(a == b);

结果:false,两个对象的地址不同。和equale()相同

 

2、equals()方法只比较引用类型

//equals()源码
public boolean equals(Object obj) {
    return (this == obj);
    }

(1)如果没有对equals方法进行重写,比较的是所指向的对象的地址

Name a = new Name("小明");
Name b = new Name("小明");
System.out.println(a.equals(b));

结果:false

(2)String类、File类、包装类等里边对equals()方法进行了重写,比较的是所指向的对象的内容

String a = "小明";
String b = "小明";
System.out.println(a == b);
System.out.println(a.equals(b));

结果:true true

 

猜你喜欢

转载自blog.csdn.net/huoguang_/article/details/90340780