- 有程序片段如下,以下表达式结果为 true 的是(B)
A. s==tFloat s = new Float(0.1f);Float t = new Float(0.1f);Double u = new Double(0.1);
B. s.equals(t)
C. u.equals(s)
D. t.equals(u)
解析:
Float类和Double类都重写对应的equals方法,在比较之前都会判断是否同属于Float对象或Double对象,如果不是直接返回false,如果是再继续比较对应的数值大小。
JDK1.8的源码如下:
1. Float类重写了equals方法:
public boolean equals(Object obj) {return (obj instanceof Float)&& (floatToIntBits(((Float)obj).value) == floatToIntBits(value));}
- Double类重写了equals方法:
public boolean equals(Object obj) {return (obj instanceof Double)&& (doubleToLongBits(((Double)obj).value) == doubleToLongBits(value));}
