簡體   English   中英

給 int 賦值時,括號中的“int”是什么意思?

[英]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)轉換為整數。

由於timelastFrame都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM