java入门【四】==和equals()区别

目录

 一、"== "的使用

二、equals()方法

注意事项

三、equals()方法原则:


 一、"== "的使用

==:运算符

表示比较“==”两边的对象的值是否相同,但是“值”也是有所区分的,分为基本数据类型和引用数据类型。

  •  如果比较基本数据类型,则比较他们的值是否相同。
  • 如果比较的是引用数据类型,则比较的是对象的地址值是否相同。

在比较基本数据类型时,表示对数值的操作,比较数值是否相等,但不一定非要他们的数据类型是一样的,比如,不一定非要double和double,或者int和int相比,可以是其他的基本数据类型相比。

public class EqualsTest {
	
	public static void main(String[] args) {
		System.out.println("************基本数据类型****************");
		int i=10;
		int j=10;
		double d=10.0;
		System.out.println(i==j);//true;
		System.out.println(i==d);//true;
		char c=10;
		
		System.out.println(i==c);
		char c1='A';
		char c2=65;
		System.out.println(c1==c2);
		}
	}

运行结果:

二、equals()方法

首先:equals()是一个方法

equals()方法比较的是对象的内容是否相同,它应用于引用数据类型

其实在看java中源码时候可以看出来,equals()方法调用的也是“==”的判断,不过这是在没有重写equals()方法之前,也就是说equals()默认的是“==”,在这里有很多笔者没有说的很明确,有时候会有误导新手,比如说像我这样的,所以关于重写的原理可以自己研究研究。所以说如果要比较引用数据类型对象的内容是否相同,就必须先对equals()方法重写。

 

注意事项

1.是一个方法,而非运算符(即不能使用在基本数据类型中)

 2.只适用于引用数据类型中。

 3.Object类中equals()的定义 

public boolean equals(Object obj){

         return(this==obj);

 }

 说明:Object中定义的equals()和==的作用是一样的,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象。

  4.像String,Date,File。包装类等都重写了Object类中的equals()方法,

  重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。

  5.通常情况下,我们自定义的类如果使用equals()方法重写,

           重写的原则:比较两个对象的实体内容是否相同。

public class EqualsTest {
		
	public static void main(String[] args) {
		System.out.println("*************引用类型***************");
				
		Customer cust=new Customer("Tom",21);
		Customer cust1=new Customer("Tom",21);
		System.out.println(cust==cust1);
				
				
		String str1=new String("hello world");
		String str2=new String("hello world");
		System.out.println(str1==str2);
		}
	}

运行结果:

三、equals()方法原则:

1、自反性:x.equals(x)返回true;

2、对称性:若x.equals(y)为true,则y.equals(x)亦为true;

3、传递性:若x.equals(y)为true且y.equals(z)也为true,则x.equals(z)亦为true;

4、一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也均为true,前提条件是没有修改x也没有修改y;

5、对于非空引用x,x.equals(null)永远返回为false

大佬勿喷,欢迎大家的指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值