2011-07-16 228 views
0
public class TestEmployee { 
    public static void main(String args[]) { 
      byte b=(byte)1*200; 
      System.out.println(b); 
     } 
    } 

我寫了上面的簡單代碼。但我越來越folowing錯誤「可能損失的精度」鑄造原始數據類型

據我所知,當我們進行整數計算,操作數轉換爲int,然後執行計算。最終的結果是int。現在當字節數據類型的範圍是(-128到127)時,上述計算超出了字節範圍。所以我把它貶低爲字節。那爲什麼我得到這個錯誤。

請幫忙糾正我的鑄造的概念..

回答

4

您鑄造1一個字節的1*200沒有結果。所以你想使用

byte b = (byte)(1*200); 

在這種情況下。

+0

請你能幫助我瞭解鑄造的概念。我對此很困惑。 – ANURAG

0

在向下轉換時,您錯過了括號()
改變這個樣子,

byte b=(byte)(1*200); 

當你這樣寫,

byte b=(byte)1*200; 
       ^
    `compilation error : possible loss of precision` 

這是因爲它會嘗試把一個int : 200爲字節這將導致編譯錯誤

+0

請你幫助我理解鑄造的概念。我對此很困惑。 – ANURAG

0

你還沒有把1 * 200放在括號內。它應該是byte b = (byte)(1 * 200).

否則你做byte b = 200這是一個int,你會得到一個錯誤。

1

你的代碼應該是這樣的....乘法運算之前只是缺少括號否則只有1會垂頭喪氣和200仍然是整數

public class TestEmployee { 
public static void main(String args[]) 
{ byte b=(byte) (1 * 200); 
    System.out.println(b); 
} 
}