当前位置:网站首页>==与equals
==与equals
2022-04-22 07:50:00 【星空下的那个人影】
==
它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。
- 基本数据类型+String常量==比较的是值
- 引用数据类型==比较的是内存地址

equals()
它的作用也是判断两个对象是不是相等。但是它一般有两种使用情况:
● 情况1:类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于"=="比较这两个对象。
● 情况2:类覆盖了equals()方法。一般,我们都覆盖equals()方法来比较两个对象的内容是否相等。
public class testEquals {
public static void main(String argu[]){
String a = new String("ab"); // a 为一个引用
String b = new String("ab"); // b为另一个引用,对象的内容一样
String aa = "ab"; // 放在常量池中
String bb = "ab"; // 从常量池中查找
Integer aaa = 127; // 放在常量池中
Integer bbb = 127; // 从常量池中查找
Integer aaaa = 128; // 放在常量池中
Integer bbbb = 128; // 在堆内存中创建一个新的对象
if (aa == bb){
//true
System.out.println("aa == bb");
}
if (a == b){
//false,非同一对象
System.out.println("a == b");
}
if (a.equals(b)){
//true
System.out.println("a.equals(b)");
}
if (aa.equals(bb)){
//true
System.out.println("aa.equals(bb)");
}
if (aa.equals(b)){
//true
System.out.println("aa.equals(b)");
}
if (a.equals(bb)){
//true
System.out.println("a.equals(bb)");
}
if (42 == 42.0){
//true
System.out.println("42 == 42.0");
}
if (aaa == bbb){
//true
System.out.println("aaa == bbb");
}
if (aaa.equals(bbb)){
//true
System.out.println("aaa.equals(bbb)");
}
if (aaaa == bbbb){
//false,非同一对象
System.out.println("aaaa==bbbb");
}
if (aaaa.equals(bbbb)){
//true
System.out.println("aaaa.equals(bbbb)");
}
}
}
说明
● String中的equals()方法是被重写过的,因为object的equals()方法是比较对象的内存地址,而String的equals()方法是比较对象的值;
● 当创建String类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同对象,如果有,则就把它赋值给当前引用。如果没有就在常量池中重新创建一个String对象;
● 因为 Integer 在常量池中的存储范围为[-128,127],127在这范围内,因此是直接存储于常量池的,而128不在这范围内,所以会在堆内存中创建一个新的对象来保存这个值,所以aaaa,bbbb分别指向了两个不同的对象地址,故而导致了不相等。
版权声明
本文为[星空下的那个人影]所创,转载请带上原文链接,感谢
https://blog.csdn.net/sb_jb/article/details/124120786
边栏推荐
- Aircrack 破解无线网密码 (跑字典法)
- Pointer and array (detailed operation)
- js中使用art-template的参数
- Abbreviation for greater than / less than / equal to (abbreviation of SQL database includes mangodb)
- POI operation excel three swordsman
- Putty 配置 - 自我感觉舒适
- 235. Nearest common ancestor of binary search tree (easy)
- RedHat7配置yum
- Interview question 04.03 Specific depth node linked list (medium)
- SQL query removes empty data and null fields
猜你喜欢

14个py小游戏 源代码分享

Hyperledger Fabric1.4环境搭建及示例测试

CSDN怎么转载别人的博客

Scanf / sprintf, fscanf / fprintf, sscanf / sprintf, snprintf of C language

Mapbox sets the official map language to Chinese

RHEL user and group management - Notes

236. The nearest common ancestor of a binary tree (medium)

Dynamic memory management of C

RHEL7 逻辑卷管理-笔记

Android Development - SQLite and sqlitedatabase Application Experiment 6 notes
随机推荐
DTV专业术语
How does CSDN reprint other people's blogs
Elastic job installation deployment access
express项目将jade模板改为art-template
RedHat7配置yum
Wechat applet: typeerror: cannot read property 'Mark' of undefined
初识C语言~循环语句
素数求解的N种境界
工业缺陷检测项目实战(四)——基于HRNet的陶瓷缺陷检测
PCIe learning - how to make PCIe bus compatible with PCI bus in software (7)
PCIe学习-PCIe总线体系结构入门:事务层-数据链路层-物理层(八)
JS cross domain problem solving
window如何查看端口被占用
navicat连接oracle数据库失败:cannot load OCI DLL,87:Instant Client package is ...
Redis is easy to use
Blue Bridge Cup: dance of sine [Jav language implemented recursively]
C语言 可变参数 用法
pycharm 咋下载
elastic-job安装部署接入
解决磁盘有空间但创建不了文件---修复服务器文件系统