-2

私はJavaが初めてです。したがって、この例外が発生する理由を理解できません。これが私のコードです:

class St
{
    public static void main(String s[])
    {
        byte b1,b2,b3;
        b1=10;
        b2=5;
        b3=b1+b2;
        System.out.println(b3);
    }
}

説明してください。

4

8 に答える 8

1

Javaの二項演算は少なくとも値を返す必要があるためCast、結果が必要です。したがって、値であり、2つのオペランドの結果をキャストして、に割り当てます。byteintbyte+byteintb1b2byteb3byte

b3=(byte)(b1+b2);
于 2013-10-12T09:47:20.233 に答える
1

b1+b2は自動的にint(すぐ上のプリミティブ) にキャストされます。最大値に達する可能性があるため、手動でキャストしないと (望ましくない結果になる可能性があります) にbyte割り当てることができません。byte代わりにこれを試してください。

byte b1,b2;
int b3;
b1 = 10;
b2 = 5;
b3 = b1 + b2;
于 2013-10-12T09:47:30.580 に答える
1

byte2 つのを追加した結果はintです。したがって、を に代入すると、精度が低下する可能性があります。それがコンパイラがあなたに警告していることです。したがって、明示的に行うには、ここでキャストする必要があります。intbyte()

b3 = (byte) (b1+b2);
于 2013-10-12T09:48:06.743 に答える
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);
    }
}
于 2013-10-12T09:47:36.600 に答える
0

バイトでキャストすると動作します。

b3=(byte) (b1+b2);

As+は自動的に int に変換されます。

のようなエラーがスローされますType mismatch:cannot convert from int to byte

于 2013-10-12T09:47:53.603 に答える