私は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つのオペランドの結果をキャストして、に割り当てます。byteintbyte+byteintb1b2byteb3byte
b3=(byte)(b1+b2);
b1+b2は自動的にint(すぐ上のプリミティブ) にキャストされます。最大値に達する可能性があるため、手動でキャストしないと (望ましくない結果になる可能性があります) にbyte割り当てることができません。byte代わりにこれを試してください。
byte b1,b2;
int b3;
b1 = 10;
b2 = 5;
b3 = b1 + b2;
byte2 つのを追加した結果はintです。したがって、を に代入すると、精度が低下する可能性があります。それがコンパイラがあなたに警告していることです。したがって、明示的に行うには、ここでキャストする必要があります。intbyte()
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。