java中equals()和双等号==的区别

本文深入探讨了Java中equals方法与==运算符的区别,详细解释了它们在字符串比较中的行为差异,以及如何在不同场景下正确使用。

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

x.equals(y) 比较的是x与y的内容是否相等。

x==y  比较的是x与y的地址是否相等。

但是在Object类中equals返回的是==的判断,所以在Object类中equals和==没有区别,而所有的类都是继承自java.lang.Object类。只有在个别类,如String、Integer等对equals方法进行了重写使其进行地址的比较。但是在没有对equals进行重写的类中就只能从Object类中继承equals的方法。

而String x="123";  与  String x=new String("123") ;  还有区别。

String y="123";在创建对象时会先查找是否有值为"123"的对象,如果有就让y指向它的地址。(在这里y指向了x的地址)所以这时x==y虽然比较的是地址但是返回的仍是true。

String y=new String("123") ;在创建对象时直接创建一个新的对象。所以这时x==y返回的是false。

public static void main(String[] args) {
		String x="123";
		String y="123";
		System.out.println(x==y);
		System.out.println(x.equals(y));
	}

运行结果:true                                                                                                                                                                                                    true

public static void main(String[] args) {
		String x=new String("123");
		String y=new String("123");
		System.out.println(x==y);
		System.out.println(x.equals(y));
	}

运行结果:false                                                                                                                                                                                                    true

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值