Objects.equals有坑】的更多相关文章

前言 最近review别人代码的时候,发现有个同事,在某个业务场景下,使用Objects.equals方法判断两个值相等时,返回了跟预期不一致的结果,引起了我的兴趣. 原本以为判断结果会返回true的,但实际上返回了false. 记得很早之前,我使用Objects.equals方法也踩过类似的坑,所以有必要把这个问题记录下来,分享给大家. 到底怎么回事呢? 1. 案发现场 假设现在有这样一个需求:判断当前登录的用户,如果是我们指定的系统管理员,则发送一封邮件.系统管理员没有特殊的字段标识,他的用…
equals 相信大家就知道,就是比较,我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同,例如这样 public class Person { private String name; //姓名 private int age; //年龄 private String nickName; //昵称 public Person(String name,int age,String nickName){ this.name = name; this.age = age;…
今天在JDK6上做开发,遇到一个很诡异的问题. Domain中一个实体是Date,称为变量 a, 使用Calendar构造出来的Date,称为变量b, 虽然都是同一天,比如 2016-11-11 00:00:00,但是调用equals的结果却是不一样,为什么会出现这个情况? System.out.println(a.equals(b)); // false System.out.println(b.equals(a)); // true Domain的变量来自Hibernate,虽然其类型描述为…
前言 作为Java程序员的你,不知道有没有踩过一些基础知识的坑. 有时候,某个bug查了半天,最后发现竟然是一个低级错误. 有时候,某些代码,这一批数据功能正常,但换了一批数据就出现异常了. 有时候,你可能会看着某行代码目瞪口呆,心里想:这行代码为什么会出错? 今天跟大家一起聊聊99%的Java程序员踩过,或者即将踩的6个坑. 1. 用==号比较的坑 不知道你在项目中有没有见过,有些同事对Integer类型的两个参数使用==号比较是否相等? 反正我见过的,那么这种用法对吗? 我的回答是看具体场景…
Object类 toString()方法 public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } /* 直接打印对象的地址值没有意义,需要重写Object类中的toString方法 打印对象的属性(name,age) */ /* @Override…
Object类的equals方法默认比较的是两个对象的地址值,没有意义 所以我们需要重写equals方法,比较两个对象的属性值(name,age等等): 对象的属性值一样返回true否则返回false 问题: 隐含着一个对套 Object obj = p2 = new Person("古力娜扎",18); 多条弊端: 无法使用子类特有的内容(属性,方法) 解决:可以使用向下转型(强转)把Object类型转换为Person Person person = (Person) o; @Ove…
1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ==,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming"); 有经验的老司机很快就能看到问题,如果user.getName()为null,就会抛出空指针异常,因此下面的写法更为稳妥 "xiaoming".equals(user.getName()); 当然这种写法并不是万能的,如果比对的两边都是未知变量,如下 user.getNam…
空指针异常这个坑爹的异常是初学开发者最常见的坑,那么今天为大家分享一个jdk的新工具java.util.Objects包.里面有很多工具可以帮我们避免空指针异常让我我们的代码写起来更加优雅.下面我们来看看这个工具包的有哪些工具.大名鼎鼎的equals. 通常我们在写两个字符串内容对比的时候通常都这么写 Object.equals("样本"):这种写法最大的问题是如果这个object是null那么这个必然会报空指针异常.通常老司机会告诫我们是这样写比较好 “样本”,equals(Obje…
什么是 equals 和 hashcode 方法? 这要从 Object 类开始说起,我们知道 Object 类是 Java 的超类,每个类都直接或者间接的继承了 Object 类,在 Object 中提供了 8 个基本的方法,equals 方法和 hashcode 方法就是其中的两个. equals 方法:Object 类中的 equals 方法用于检测一个对象是否等于另一个对象,在 Object 类中,这个方法将判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.…
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完成,可以到 我的github 上查看系列完整内容.也可以在公众号内回复「pdf」获取我精心制作的 pdf 版完整教程. 4月22日,阿里巴巴发布了泰山版<Java 开发手册>,以前以为终极版就真的是终极版了,没想到还是想的太简单了,继终极版之后又发布了详尽版.华山版,这不,泰山版又来了.想想也对,…