2013-06-19 142 views
-8

在Java中的原始類型轉換中,以下代碼將顯示什麼內容?類型轉換int和double

float a = 1.11; 
int b = a; 
int c = (int)a; 
System.out.println(a + " " + b + " " + c); 

如果double是64位而int是32位,那麼double變量可以轉換爲int嗎?

+9

_「以下代碼會顯示什麼?」_你爲什麼不試試自己?它不會顯示,因爲它不會編譯。 –

+0

請問清楚你的問題 –

+0

爲什麼不編譯? –

回答

2

要回答你最後一個有趣的問題(問題的其他部分最好由調試器回答),對於int來說太大的double將投射到最大可能的int中;類似地,對於一個int來說太小的double將投射到儘可能小的int。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#d5e4334參見

注意,一個int是用Java定義爲32個比特(永恆)和雙爲64位(永恆)。

0

這將編譯:

float a = 1.11f; 
int b = (int) a; 
int c = (int)a; 
System.out.println(a + " " + b + " " + c); 
  1. 要初始化變量float,你應該在數值的結尾添加f
  2. float,就像double一樣,在不同的位大小的情況下不能被轉換成int類型。
  3. 下一次請使用google.com找到這樣的答案。