2012-03-26 260 views
1

這是我的例子。向int給值時,括號中的'int'是什麼意思?

public int getDelta() 
    { 
     long time = getTime(); 
     int delta = (int) (time - lastFrame); 
     lastFrame = time; 

    return delta; 
} 

在第四行中,有一個「(int)」。這是什麼意思?

這段代碼只是我找到的一個例子;我沒有尋找我發佈的代碼的特定答案。 (int)通常會做什麼。我也看過(字節)。

+3

這是一個「演員」。將值的數據類型強制轉換爲指定類型的右側。 (在C或Java類中幾乎是第一天的東西) – 2012-03-26 16:30:01

回答

4

這意味着你正在投入一個長整型。請參閱:http://en.wikipedia.org/wiki/Type_conversion

你不能只是說

int delta = (time - lastFrame); 

由於時間和lastFrame是多頭(我假設lastFrame,至少)。因此,您必須將類型(轉換)該減法的結果轉換爲整數值。

+0

嗯,是的,我忘記了從大數據類型到小數據類型的Java強制類型轉換。 +1 – 2012-03-26 16:34:59

1

這是一個轉換運算符。它將(time - lastFrame)轉換爲整數。

由於兩個timelastFramelong int S,也沒有必要四捨五入。

如果您有任何一個floatdouble,差異有可能被捨去。

你的情況,它只是使用一個較小的數據類型:int,而不是long

3

當您將轉換爲(int)時,您會丟棄浮點後的任何分數。例如:

System.out.println((int) 15.5); // prints 15 
2

將其轉換爲原始數據類型int。它會嘗試將計算結果(在這種情況下將爲long類型)轉換爲原始類型int(整型)。因此,如果你從該行(作爲例子)得到16.253353的結果,那麼該轉換將返回16,因爲int不處理小數位,只處理整數。

1

(typename)value或variable被稱爲casting。它告訴Java將值視爲演員規定的類型。有時候這是必要的,因爲已經編寫的方法返回的類型太大 - 你需要一個int並且該方法返回一個long。有時它用於將超類轉換爲子類,以便可以調用子類中的方法。如果你將原語轉換爲其他類型,確保變量的大小足夠大以保存值,否則你會得到更奇怪的溢出值。如果您將對象轉換爲其他類型,則必須確保該對象是正確的類型,否則將得到ClassCastException,例如將String轉換爲日期將不起作用,因爲它們不在同一個類層次結構中。

1

這個強制轉換用於確保結果以int值返回。在這種情況下,使用getTime()函數的時間是一個很長的值(可能是int64)。但是對於delta,你需要將它轉換爲int(int32)值。此演員陣容可能會失去價值

1

在括號中聲明數據類型會使編譯器對該類型執行顯式強制轉換。 它可以用任何類型/對象完成。例如:

MyObject myobject = (MyObject) MyArray[0]; 

在你的代碼中,我相信它會將你的結果變量定義爲int而不是日期。

相關問題