Java es un lenguaje terriblemente estricto a la hora de asignar valores a las variables. Solo nos permite asignar un dato que sea propio de la variable declarada. Un int es un numero natural, por lo que llorara a gritos si intentamos asignarle un numero decimal. Incluso lloraría si tratamos de trabajar con una variable sin valor:
Pero a lo que vamos... java permite hacer conversiones de tipo entre los primitivos, menos con el bolean ya que es incompatible con todos.
Las conversiones pueden hacerse de dos maneras, de forma implícita y explicita.
Conversiones implícitas
Este tipo de conversiones se realizan de forma automática. Lo que quiere decir que la conversión la ejecuta el mismo compilador al tipo de dato que recibirá el valor.
Para que esto pase, hay que cumplir una regla... el tipo de dato de destino debe ser mayor o igual al tipo de dato de origen. En este caso el destino (int) es mayor que el dato de origen (byte).
Tenemos dos excepciones a la regla:
- Si la variable de destino es entera y el origen es decimal (float o doble) la conversión no podrá ser automática.
- Si la variable de destino es un char y el origen es numérico, no podrás hacer ninguna conversión.
Conversiones explicitas
Cuando no se cumplen las condiciones para una conversión implicita, tenemos que recurrir a usar expresiones.
variable_destino = (tipo_destino) dato_origen;
Con esto le estamos diciendo al compilador que convierta el dato origen al tipo de la variable destino.
Esta operación es conocida como casting o estrechamiento, ya que al convertir un tipo de dato a otro tipo de dato de tamaño inferior, se estrecha, perdiendo en algunos casos los datos, aunque esto no provocaría errores de ejecución.
No hay comentarios:
Publicar un comentario