文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。
面试官:何对Integer和Double类型判断相等?
参考答案:
Integer
、Double
不能直接进行比较,这包括:
不能用
==
进行直接比较,因为它们是不同的数据类型;不能转为字符串进行比较,因为转为字符串后,浮点值带小数点,整数值不带,这样它们永远都不相等;
不能使用
compareTo
方法进行比较,虽然它们都有compareTo
方法,但该方法只能对相同类型进行比较。
整数、浮点类型的包装类,都继承于Number
类型,而Number
类型分别定义了将数字转换为byte
、short
、int
、long
、float
、double
的方法。所以,可以将Integer
、Double
先转为转换为相同的基本数据类型(如double
),然后使用==
进行比较。
示例代码
Integer i = 100;
Double d = 100.00;
System.out.println(i.doubleValue() == d.doubleValue());