Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] Casting a la variable caracter = 65 + 1

Al declarar la variable caracter = 65 + 1, cuando el profesor hizo casting utilizo un paréntesis en la suma completa (caracter + 1).Dejando así el código...

public class EjemploCaracteres {
    public static void main(String[] args) {
        caracter = 65 + 1;
        char segundoCaracter = (char) (caracter + 1);
        System.out.println(segundoCaracter);
    }
}

No entendí la lógica del (char) (caracter + 1); ¿Por qué se debe cerrar todo en paréntesis si la variable caracter es numérica? ¿No es lo mismo que dejar (caracter) + 1; en la operación? ¿Alguien me podría explicar el por qué del casteo a toda la operación?

2 respuestas

Buen día, se deja entre paréntesis ya que lo que se quiere es que el programa haga primero la suma del caracter+ 1 y luego haga el cast a char, si se hace como dices, (caracter)+ 1, primero castearia el carácter convirtiéndo el valor de 66 en su respectivo valor ASCII y luego trataria de sumar un entero a un carácter lo cual diria que da un error.

También mencionar que a la variable caracter no se le ha declarado un tipo de variable, también da un error en el ejemplo que proponés.

Debes tener en cuenta que después de realizar el casting en el valor de la variable "(char)" va acompañado del valor del código ASCII --> (char)165 por ejemplo. Pero al realizar una operación aritmética para este propósito se debe poner entre paréntesis -->(char)(165+1) dando como resultado (char)166 PORQUE si la operación no está entre los "()" estaría mal la estructura (char)165+1, ya que el compilador comprende hasta el (char)165 pero el +1 estaría sobrando y por lo tanto te bota un error.