public static void main(String[] args) {
short s = 2;
s += 1; // compila
s = s + 1; //não compila
}
public static void main(String[] args) {
short s = 2;
s += 1; // compila
s = s + 1; //não compila
}
Olá Flávio,
A soma de dois tipos inteiros sempre retornará um int. A primeira expressão compila, pois um casting automático é realizado. Assim, a expressão s += 1 é transformada em (short) (s + 1) . Mais detalhes podem ser encontrados aqui: http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2