我是Java新手。所以我无法理解发生此异常的原因。这是我的代码:
class St
{
public static void main(String s[])
{
byte b1,b2,b3;
b1=10;
b2=5;
b3=b1+b2;
System.out.println(b3);
}
}
请解释。
答案 0 :(得分:2)
Java没有字节的加法运算符,因此要计算b1+b2
,值将转换为int
,并且计算总和为整数。您得到错误,因为没有从int到byte的隐式转换,因为可能会丢失精度。
您必须使用隐式转换转换才能将总和计为byte
:
b3=(byte)(b1+b2);
顺便说一句,这不是“异常”,而是编译时错误。运行程序时会产生异常。
答案 1 :(得分:1)
您需要Cast
结果byte
,因为java中的二进制操作至少应该返回int
值,因此byte+byte
是int
值,将两个操作数b1
和b2
的结果转换为byte
,并将其分配给b3
byte
:
b3=(byte)(b1+b2);
答案 2 :(得分:1)
b1
+ b2
会自动投放到int
(更大的原语),因为您可以达到最大byte
值,因此无法分配没有手动投射到byte
(这可能会导致不希望的结果)。试试这个.-
byte b1,b2;
int b3;
b1 = 10;
b2 = 5;
b3 = b1 + b2;
答案 3 :(得分:1)
添加两个byte
s的结果是int
。因此,当您将int
分配给byte
时,此处存在潜在的精度损失。这就是编译器警告你的内容。因此,您需要在此处执行转换()
以明确地将其作为
b3 = (byte) (b1+b2);
答案 4 :(得分:1)
当你添加到字节值时,结果将是整数,所以如果你试图添加到字节并将其分配给字节,它会给你castexception.So只需输入add的值到byte或取结果输入整数。
答案 5 :(得分:0)
像这样(byte)
完整答案
class St
{
public static void main(String s[])
{
byte b1,b2,b3;
b1=10;
b2=5;
b3=(byte) (b1+b2);
System.out.println(b3);
}
}
答案 6 :(得分:0)
在使用byte进行转换后它将起作用。
b3=(byte) (b1+b2);
当+
自动转换为int。
它会抛出Type mismatch:cannot convert from int to byte
之类的错误。
答案 7 :(得分:0)
相当直接,试试这段代码:
public class st
{
public static void main(String s[])
{
byte b1,b2,b3;
b1=10;
b2=5;
b3=(byte) (b1+b2);
System.out.println(b3);
}
}