Dlaczego nie mogę dodać dwóch bajtów i uzyskać int, a mogę dodać dwa ostatnie bajty?

public class Java{
    public static void main(String[] args){
        final byte x = 1;
        final byte y = 2;
        byte z = x + y;//ok
        System.out.println(z);

        byte a = 1;
        byte b = 2;
        byte c = a + b; //Compiler error
        System.out.println(c);
    }
}

Jeśli wynik wyrażenia obejmującego cokolwiek o rozmiarze mniejszym lub większym jest zawsze int, nawet jeśli suma dwóch bajtów mieści się w bajcie.

Dlaczego tak się dzieje, gdy dodajemy dwa ostatnie bajty, które mieszczą się w bajcie? Nie ma błędu kompilatora.

questionAnswers(2)

yourAnswerToTheQuestion