@Test
public void test1() {
Object o1 = true ? new Integer(1) : new Double(2.0);
System.out.println(o1);// 1.0
}
這句話到底發生了什麼?
1、三目運算符要求 表達式2 和 表達式3 類型一致,中間的自動類型提升了,int轉doub
2、int轉double了,返回值是object的,又提升了,double轉obj。
3、輸出o1
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
輸出的object轉成string輸出。
但是 Double重寫了toString,
public static String toString(double d) {
return FloatingDecimal.toJavaFormatString(d);
}
這裏又涉及到了多態,父類的對象指向子類的引用。多態調用重寫的toString();即Double包裝類的toString();
就一句話,真費勁,開發中沒這麼玩過