equals和==区别

本文探讨了Java中equals方法和==运算符的使用差异。在Object类中,equals默认实现为比较对象的引用。对于String类型,equals首先比较地址,相同则返回true,否则对比内容。由于基本类型和引用类型存储方式不同,因此在比较时要注意。对于引用类型,应使用equals来比较内容。此外,还介绍了StringBuilder和String两种字符串拼接方式。
摘要由CSDN通过智能技术生成

初始印象:很多人都认为==是比较地址,equals是比较内容,这样是有点不准确的:

在Object中,equals里面实际就是用做比较的
Object中的equals方法,其实就只是进行了== 的判断
再看String中的equals方法,先是比较了地址,如果相等就返回true,如果不相等就再比较内容,如果内容相等还是返回true;
在这里插入图片描述
原因:基本数据类型是直接存储在栈空间;引用数据类型是分开存,栈存地址,堆存值;
在这里插入图片描述
用 == 做比较的时候,其实比较的是栈空间里面的东西,所以基本数据类型用 == 是可以的。
但是引用数据类型使用
做比较的时候,比较的是栈空间的地址,因为地址不同就会返回false;如上面的两个String,所以引用数据类型要使用equals进行比较;

在这里插入图片描述

另有小知识:

//StringBuilder拼接字符串
StringBuilder str1 = new StringBuilder();
str1.append(word1);

//String拼接字符串可以使用concat
String str1 = "";
str1 = str1.concat(word1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值