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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software