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

Dúvida no Ex. 17 da Aula 7 - Casting

Olá pessoal,

Fiquei com uma dúvida:

class A {
    public static void main(String[] args) {
        char c = 65;
        char c2 = 68 - 65; // O mínimo de uma operação não é int?
        System.out.println(c + c2);
    }
}

Se o mínimo de uma operação é int porque aqui não deu um problema de compilação?

4 respostas
solução!

Oi Paulo, não dá nenhum erro porque você está fazendo a subtração com duas constantes.. o compilador é esperto para saber que o resultado da operação entre essas 2 constantes vai caber no char.

Alberto,

Obrigado pelo retorno, não entendi quando você fala de duas constantes? Constante não é uma váriavel final?

Sobre esse problema, vamos dizer que fizéssemos isso:

char c = 65;
char c2 = c - 65;

Iriamos ter um erro de compilação, porque os tipos não são compatíveis (char - int)...

Logo o trecho abaixo funciona porque estamos subtraindo dois chars (char - char), não seria isso?

char c = 65;
char c2 = 68 - 65;

Acredito que o Alberto quis dizer é que essas constantes possuem valores literais definidos (não vem do console ou de alguma outra operação em algum outro método específico)...

Então, o compilador consegue saber se o que vai acontecer é uma operação válida ou não...

Um palpite é tentar modificar os valores recebidos em c2, fazendo com que resultem em um valor não aceito por um char (como negativo).

Obrigado Leonardo, pelo esclarecimento. Ajudou bastante. Abraços