Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Por que compila ?

Pessoal,

Analisando a atribuição do char no código abaixo me ocorreu uma dúvida. Não deveria dar erro de compilação sendo que qualquer operação aritmética no java devolve um int ? O char funciona diferente ?

class A {
    public static void main(String[] args){
        char c = 65;
        char c2 = 68 - 65;
        System.out.println(c + c2);
    }
}
3 respostas

Em Java, char é tecnicamente um "número inteiro de 16 bits", então você pode simplesmente convertê-lo para int. Na documentação da Oracle temos o seguinte: "O tipo de dados char é um único caractere Unicode de 16 bits. Ele tem um valor mínimo de '\ u0000' (ou 0) e um valor máximo de '\ uffff' (ou 65.535 inclusive)." O que ocorre para o tipo char em java é que o número informado é convertido pela sua representação considerando a tabela Unicode: https://www.rapidtables.com/code/text/unicode-characters.html

Hum... então pelo o que entendi, mesmo que a operação resulte em um int, o resultado é convertido para char e depois é atribuido à variável. Correto ?

solução!

Exatamente Ederson (= Por definição (em java), um char é um número inteiro não assinado de 8 bits.