转换原始数据类型

时间:2011-07-16 12:15:40

标签: java casting primitive-types

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

我上面写的是简单的代码。但我得到了下面的错误“可能会失去精确度”

据我所知,当我们执行整数计算时,操作数将转换为int,然后执行计算。最终结果是int。现在,当字节数据类型的范围是(-128到127)时,上述计算超出了字节范围。所以我把它转发到字节。那我为什么得到错误。

请帮助并纠正我的铸造概念..

4 个答案:

答案 0 :(得分:4)

您正在将1转换为一个字节,而不是1*200的结果。所以你想使用

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

在这种情况下。

答案 1 :(得分:1)

你的代码应该是这样的....只是在乘法运算之前缺少括号,否则只有1将是向下转换而200仍然是整数

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

答案 2 :(得分:0)

在向下转发时,您缺少括号() 像这样改变,

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

当你这样写时,

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

这是因为它试图将int : 200转换为导致编译错误的字节

答案 3 :(得分:0)

您尚未将1 * 200放入括号中。它应该是byte b = (byte)(1 * 200).

否则你执行byte b = 200这是一个int并且你得到一个错误。