java中"=="和equls的区别

主题: == 和 equals的区别:

1 : 当我们使用“==”比较时;比较的是两个变量的引用类型,实质比较的是两者的物理地址值(内存地址)。
现在我们来看一个例子:
`Test{
int i = 0;
}
public static void main pactice(String[] args){

	Tset t1 = new Tset();
	Tset t2 = new Tset();
	
	t1.i=4;
	t2.i=4;
	System.out.println(t1 == t2);
	System.out.println(t1.i == t2.i);

}`
如上面的例子所示打印输出后的值是false
我们创建了一个Test类,然后创建t1和t2两个Test对象,分别给它们两个进行针对性初始化,我们先比较的是t1 和 t2 这两个的对象 ,返回值是false ;可以看出我们创建了两个对象,在对内存中开辟了两个内存空间,所以t1 不 等于 t2;然而当我们比较t1.i 和 t2.i 的时候 ,我们先是去找对象,对象再去常量池中找4 的地址,所以t1.i 和 t2.i 拿到的同一个常量池中的地址,所以他们的返回值是true。
2. 当我们使用equals()的时候,比较的是两个对象中的值是否相等:
下面我们来看一个例子

class Tset{
	int i = 0;
	public boolean equls(Tset tset){
		if(this == tset){
			return true;
		}
		if(tset == null){
			return false;
		}
		
		if(this.i == tset.i){
			return true;
		}
		
		return false;
	}
}

我们对这个方法进行了重写,由上述代码中我们可以看见这个方法中也是在用**==** 来进行比较的,最后的实质还是比较里面具体的值是否相等,如果里面具体的值相等的话,即使刚开始不是属于同一个对象的,但他们中具体 成员变量引用常量池中的地址是相同的,所以这个方法是比较具体的值的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值