直接上图:
为什么判断自己等于自己 结果还是 false?
先来说一下NaN 和 Infinity
Java中提供了三个特殊的浮点数值:正无穷大、负无穷大、非数,用来表示溢出和出错。(只针对浮点数)
正无穷大:正数除以0.0得到正无穷大;(POSITIVE_INFINITY)
负无穷大:负数除以0.0得到负无穷大;(POSITIVE_INFINITY)
非数:0.0/0.0或对一个负数开方得到一个非数;(NaN)
看源码就明白了:
规定:
- 所有的正无穷大的数值都是相等的
- 所有的负无穷大的数值都是相等
- 而NaN不与任何数值相等,甚至和自己都不相等
回到开始的笔试题,一切都变得简单明了
Double是封装类型,“== ” 比较的是对象引用的地址,同一个对象的地址是一样的,所以结果是 true
基本数据类型比较的是值,所以(NaN == NaN)结果为 false, (Infigy == Infity)结果是 true
有问题希望在评论区多多指教