== 与 equals 的区别

本文详细解析了Java中==与equals的区别,包括基本数据类型和引用类型变量的比较方式,equals方法默认行为及重写逻辑,特别强调了字符串比较时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

== 与 equals 的区别

1.基本数据类型的比较:
基本数据类型变量指向的不是对象,不能调用方法,所以只能用 == 进行比较,并且比较的是数据类型的数值是否相等。
引用类型变量的比较:
引用类型变量指向的是对象,所以既可以用 == 进行比较,也可以用equals 进行比较。

== :
== 是java中的操作符,是不能重写的,如果两个引用使用==进行比较,那么比较的是引用指向的内存地址值是否相等。

equals:
equals是Object中的方法,每个对象都可以调用,再和其他方法比较是否相等,默认比较的是俩个引用所指向的对象内存地址值(和==号的作用一样),但是也可以在类中对equals方法进行重写,按照自己的逻辑来比较俩个对象。

下面代码说明:

private long id;
	private String name;
	private int age;
	public Student() {}
	
	public Student(long id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}

通常都是重写equals方法 依次比较(1)(2)(3)(4)
s1.equals(s2) 《======》 this 和 other

	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		//(1)s1和s2是不是指向同一个对象     如果是,相等,true
		if (this == obj)
			return true;
		//(2)s2是不是null,如果是,一定不相等
		if (obj == null)
			return false;
		//(3)s1对象的类实际型和s2对象的实际类型是否相等
		if (this.getClass() != obj.getClass())
			return false;
		//(4)自定义比较,什么情况下s1,s2想等,自己定义条件比较
		Student other = (Student) obj;
		if(this.id==other.id && this.name.equals(other.name) && this.age==other.age) {
			return true;
		}
		
		return false;
	}

注意:
字符串(String)要用equals比较,按字符一个一个比较
如果用==比较,则比较的是内存地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJY@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值