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

Dúvida sobre incremento em char

Boa tarde.

Ao tentar fazer o valor = valor + 1;, onde valor é um char deparamos com erro de conversão de int para char mencionado pelo Paulo e o código não compila.

public class TesteCaracteres {

    public static void main(String[] args) {
        char valor = 'A';
        System.out.println(valor);

        valor = valor + 1;
        System.out.println(valor);    

    }

}

No entanto, é possível incrementar a variável com a sintaxe valor++; ou valor+=1;

public class TesteCaracteres {

    public static void main(String[] args) {
        char valor = 'A';
        System.out.println(valor);

        valor++;
        // ou valor+=1;
        System.out.println(valor);    

    }

}

Como (e por qual motivo) se dá essa diferença?

Obrigado!

2 respostas
solução!

Oie Vinicius, tudo bem contigo?

O primeiro código não funciona porque não é feito o "cast" de int para char, para ele funcionar o código teria que ter sido feito da seguinte forma:

valor = (char) (valor + 1); // é feito o cast de int para char

O segundo código funciona pois é feito um "cast" implícito quando usamos valor++; ou valor=+1;.

Achei um artigo com uma ótima explicação sobre o funcionamento do "casting", clique aqui para ver.

Qualquer outra dúvida fico a disposição :)

Bons estudos!

Muito obrigado pela ajuda, Igor!

O artigo também ajudou a iluminar aqui :)

Abs!