java对象,用‘==’和‘.equals()’区别
一、上代码
例子
public static void main(String[] args) {
Short a = new Short("10000");
Short b = new Short("10000");
out.println("new Short: " + (a == b));
out.println("new Short: " + a.equals(b));
Short c = 10000;
Short d = 10000;
out.println("Short: " + (c == d));
out.println("Short: " + c.equals(d));
Short e = Short.valueOf("10000");
Short f = Short.valueOf("10000");
out.println("Short.valueOf: " + (e == f));
out.println("Short.valueOf: " + e.equals(f));
short g = 10000;
short h = 10000;
out.println("short: " + (g == h));
}
结果
文章图片
二、结论
【java对象,用‘==’和‘.equals()’区别】1.==:比较的是内存地址;
2..equals():jvm中的值;
3.使用 == 比较对象会得到不靠谱的结果,当使用Short缓存中的数字的时候结果会是true,否则就像比较10000一样返回false;
4.Short拆包后会放入缓存,即short类型,此时只能使用 == 号去比较,且是相等的;
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- JS中的各种宽高度定义及其应用
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 涉毒患者(新诗)
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询