1
resposta

Compilação dúvida

pfv estou com uma dúvida neste ponto:

    char letra = 'a';
        System.out.println(letra);

        char valor = 65;           // Compila!
        System.out.println(valor);

        valor = valor + 1;         // Não compila!
        System.out.println(valor);

No texto diz que não compila, quando escrevemos essa soma, o Java automaticamente transforma o resultado para o maior tipo, que nesse caso é int, já que o número 1 é um inteiro.

Mas quando eu faço desta forma ele compila.

char letra = 65; System.out.println(letra); letra ++; System.out.println(letra);

1 resposta

Boa tarde Georg, Na verdade ele transforma o resultado para o maior tipo se estivesse convertendo para int(que não é o caso):

int numero = valor + 1; //Compila  pois o char > int

O que aconteceu no seu código é chamado de Narrowing Primitive Conversion, que é o contrário, ele não deixa o int ser convertido para char pois pode perder informação, e não compila, pois no fim você queria um char.

Já nesta outra forma que você escreveu dá certo:

letra ++; System.out.println(letra);

Porque não tem o "Narrowing Primitive Conversion" acontecendo, dai o "java diz ok! isto não tem perigo."