私はJavaが初めてです。したがって、この例外が発生する理由を理解できません。これが私のコードです:
class St
{
public static void main(String s[])
{
byte b1,b2,b3;
b1=10;
b2=5;
b3=b1+b2;
System.out.println(b3);
}
}
説明してください。
私はJavaが初めてです。したがって、この例外が発生する理由を理解できません。これが私のコードです:
class St
{
public static void main(String s[])
{
byte b1,b2,b3;
b1=10;
b2=5;
b3=b1+b2;
System.out.println(b3);
}
}
説明してください。
Javaの二項演算は少なくとも値を返す必要があるためCast
、結果が必要です。したがって、値であり、2つのオペランドの結果をキャストして、に割り当てます。byte
int
byte+byte
int
b1
b2
byte
b3
byte
b3=(byte)(b1+b2);
b1
+b2
は自動的にint
(すぐ上のプリミティブ) にキャストされます。最大値に達する可能性があるため、手動でキャストしないと (望ましくない結果になる可能性があります) にbyte
割り当てることができません。byte
代わりにこれを試してください。
byte b1,b2;
int b3;
b1 = 10;
b2 = 5;
b3 = b1 + b2;
byte
2 つのを追加した結果はint
です。したがって、を に代入すると、精度が低下する可能性があります。それがコンパイラがあなたに警告していることです。したがって、明示的に行うには、ここでキャストする必要があります。int
byte
()
b3 = (byte) (b1+b2);
このようにバイトにキャストを追加します(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);
}
}
バイトでキャストすると動作します。
b3=(byte) (b1+b2);
As+
は自動的に int に変換されます。
のようなエラーがスローされますType mismatch:cannot convert from int to byte
。