1. 程式人生 > >?:運算子例題

?:運算子例題

題目1:

package book;
import java.util.*;
public class JiOu{
	public static void main(String[] args) {
		char x = 'x';
		int i = 10;
		System.out.println(false ? i : x);
		System.out.println(false ? 10 : x);
	}
}

運算結果:

解析:

int i = 10;中的i是一個變數,因此第一個輸出x被轉換為int型別了,而x的int型別值為120,所以第一個輸出為120。至於第2個輸出,Java程式設計規範中提到:當後兩個表示式有一個是常量表達式(本題中是10)時,另外一個型別是T(本題中是char)時,而常量表達式可以被T表示時,輸出結果是T型別。所以,因為10常量,可以被char表示。輸出結果是char型的。

 

 

題目2:

package book;

public class JiOu{
	public static void main(String[] args) {
		int a = 5;
		System.out.println(((a < 5) ? 10.9 : 9));
	}
}

結果為:

解析:

如果你的答案是9的話,那麼恭喜你中了題目設定的陷阱。((a < 5) ? 10.9 : 9)裡面有一個10.9,而後面直接跟了一個9,這時Java就會根據運算子的精度型別進行自動型別轉換。由於前面有一個10.9,因此後面的9會自動變為9.0。