[英]What does a 'int' in parenthesis mean when giving a value to an int?
這是我的一個例子。
public int getDelta()
{
long time = getTime();
int delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
在第四行,有一個“(int)”。 這是什么意思?
這段代碼只是我用它找到的一個例子; 我不是在尋找我發布的代碼的具體答案。 通常, (int) 甚至會做什么。 我也看到它用 (byte) 完成了。
這意味着您正在將 long 轉換為 int。 請參閱: http : //en.wikipedia.org/wiki/Type_conversion
你不能只說
int delta = (time - lastFrame);
因為 time 和 lastFrame 很長(我假設 lastFrame 是,至少)。 因此,您必須將減法結果的類型(強制轉換)轉換為整數值。
當你施放與(int)
你丟棄浮點后的任何部分數量。 例如:
System.out.println((int) 15.5); // prints 15
即轉換為原始數據類型 int。 它將嘗試將計算產生的結果(在本例中為long
類型)轉換為原始int
(Integer) 類型。
因此,如果該行的結果為 16.253353(作為示例),則轉換將僅返回 16,因為 int 不處理小數位,只處理整數。
它是一個轉換運算符。 它將(time - lastFrame)
轉換為整數。
由於time
和lastFrame
都是long int
,因此不需要四舍五入。
如果您有一個float
或一個double
,則其中的差異可能已四舍五入。
在您的情況下,它只使用較小的數據類型: int
,而不是long
。
(typename) 值或變量稱為強制轉換。 它告訴 Java 將值視為轉換中規定的類型。 有時這是必要的,因為已經編寫的方法返回的類型太大 - 您需要一個 int 而該方法返回一個 long。 有時它用於將超類轉換為子類,以便可以調用子類中的方法。 如果您將原語轉換為其他類型,請確保變量的大小足夠“大”以容納該值,否則您將獲得奇怪的溢出值。 如果您將一個對象轉換為不同的類型,您必須確保該對象是正確的類型,否則您將收到 ClassCastException,例如 - 將 String 轉換為 Date 將不起作用,因為它們不在同一個類層次結構中.
此強制轉換用於確保結果將以 int 值返回。 在這種情況下,時間是使用 getTime() 函數的長值(可能是 int64)。 但是對於 delta,您需要將其強制轉換為 int (int32) 值。 這種類型轉換可能會丟失值。
在括號中說明數據類型會使編譯器執行對該類型的顯式轉換。 它可以用任何類型/對象完成。 例如:
MyObject myobject = (MyObject) MyArray[0];
在您的代碼中,我相信它會將您的結果變量定義為 int 而不是日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.