viernes, 14 de octubre de 2016

8-Conversión de tipo (casting)

En este tutorial vamos a ver cómo se realizan las conversiones de tipo, es decir, cómo podemos pasar un tipo de dato a otro tipo de dato cuando lo necesitemos. Por ejemplo podemos pasar un tipo de dato float o double a int. Las conversiones de tipo se realizan de 2 maneras:

  1. De manera automática. La realiza Java sin que tengamos que hacer nada
  2. De manera explícita. Tenemos que indicarlo nosotros que queremos realizar la conversión.
Las conversiones automáticas se realizan cuando queremos pasar un tipo de dato con el valor más pequeño a otro tipo de dato que contiene el valor más grande. Por ejemplo si queremos pasar una variable de tipo byte a otra de tipo int no tendremos que hacer nada, puesto que se realiza la conversión de manera automática:

byte x = 45;
int y = x;


Un tipo byte tiene un rango de -128 a 127 y un entero tiene un rango muchísimo mayor, por eso hace la conversión de manera automática. La conversión automática se hará siempre que la variable a cambiar a otro tipo de dato sea de menor rango.

short x = 45;
long y = x;

Las conversiones explícitas en cambio es todo lo contrario cuando, por ejemplo queremos pasar un tipo int a byte. Para este caso lo debemos indicar de manera expresa ya que se puede producir una pérdida de datos. Por ejemplo de pasar un tipo de dato double a int se pierden los valores decimales, ya que si queremos pasar 18,56 a entero los decimales se perderán.
¿Cómo se hace un cast en Java? Para pasar un tipo de dato a otro se pone entre paréntesis el tipo de dato a convertir. El uso del paréntesis con el tipo de dato a convertir es para tipos de datos numéricos, para convertir por ejemplo un String en un entero no se hace con el paréntesis, sino utilizando un método de la clase del tipo de dato.

***Vale tiempo muerto, esto os puede resultar algo confuso y lioso y os podréis preguntar, si los tipos de datos primitivos no son clases ¿Cómo es que se puede utilizar métodos de su clase? Todo esto lo veremos con mucho detenimiento en futuros tutoriales, por ahora sólo tenéis que saber que de cada tipo primitivo (int, char, double...) Java creó sus clases (clase Integre, clase Double...) y estas clases se componen de métodos estáticos, que como ya hemos hecho en anteriores tutoriales se utilizan poniendo el nombre de la clase seguido de punto y el nombre del método a utilizar. Pues a través de estos métodos es como haremos para convertir caracteres a enteros por ejemplo.***

No pasa nada si os ha empezado a doler la cabeza después de leer todo esto pero lo vais a entender ahora perfectamente con ejemplos de código

8.1-Convertir un String a entero y de entero a String.

//De String a entero

String x = "485";

//Se utiliza el método estático parseInt de la clase Integer que nos permite conver//tir a entero

//el String que se le pase por parámetro, en nuestro caso la variable x

int i = Integer.parseInt(x);


Si en el String ponemos caracteres que no sean números enteros se producirá un error.
Para convertir de entero a String tenemos que hacer igual que de String a entero, es decir, debemos utilizar el método estático valueOf() de la clase String(¿Os acordáis de que los datos primitivos empezaban con minúsculas y los String no? Eso es porque como ya hemos dicho alguna vez los datos primitivos no son considerados como clases, por eso en el apartado anterior hemos hablado de que Java creó clases específicas para cada dato primitivo como Integer, eso no ocurre con los String que es una clase pero que Java nos permite utilizarlo como un dato primitivo más).

//De entero a String

int x = 485;

String y = String.valueOf(x);//Uso del método valueOf de la clase String


8.2-Convertir un double a entero y de entero a double.

//Convertir un double a entero

double x = 48.96D;

int y = (int)x;//Se realiza el cast poniendo entre paréntesis el tipo de dato a que convertir antes del

//valor o la variable del tipo de dato origen.

System.out.println(y);//Imprime 48 y se pierden los decimales


//Convertir un entero a double

int x = 45;

double y = x;//En este caso realiza la conversión automática sin que tengamos que hacer nada.

Para hacer la conversión de float a entero y de entero a float se hace exactamente igual que de double a entero y que de entero a double con la diferencia de en vez de una variable double poner una variable float.

8.3-Convertir un String a float y un float a String.

//De String a float

String x = "148.52";

float y = Float.parseFloat(x);

Cuando pasamos de un String a un tipo de dato primitivo, si nos fijamos, utilizamos siempre el método estático de la clase que Java hizo específicamente para tener clases de los datos primitivos. Y cuando queremos pasar de un tipo de dato numérico a String utilizamos el método String.valueOf()

//De float a String

float x = 9.84F;

String y = String.valueOf(x);

8.4-Convertir un String a double y un double a String.

//De String a double

String x = " 78.451";

double y = Double.parseDouble(x);


//De double a String

double x = 78.451D;

String y = String.valueOf(x);


8.5-Convertir un entero a byte y un byte a entero.

Para convertir de entero a byte tenemos que asegurarnos que la variable de tipo entero estará en el rango que comprende los dato tipo byte, si ponemos un número superior no almacenará el número que queremos, haced la prueba y veréis qué números os salen por pantalla!!!

//De entero a byte

int x = 45;

byte y = (byte)x;


//de byte a entero

byte x = 78;

int y = x;//Conversión automática


8.6-Convertir un float a byte y un byte a float

//De float a byte

float x = 45.78F;//número entre el rango de los byte

byte y = (byte)x;//perdida de decimales


//De byte a float

byte x = 26;

float y = x;//Conversión automática


*Para convertir un double a byte y de byte a double se hace exactamente igual que con float, pero cambiando el tipo de dato double por float claro está.

8.7-Convertir un entero a char y un char a entero.

Esta conversión se puede utilizar para, a partir de un carácter sacar su código Ascci y viceversa, como el ejercicio realizado que puedes ver en el siguiente enlace Ejercicio convertir entero en carácter y un carácter a código Ascii.

//De entero a char

int x = 85;

char y = (char)x;


//De char a entero

char x = 'a';

int y = x;//conversión automática


8.8-Convertir un char a String y un String a char.

//De char a String

char x = 'a';

String y = String.valueOf(x);


//De String a char

String x = "Hola";

char y = x.charAt(0);//Indicamos qué carácter queremos pasar a char. No pasa a char
//la palabra Hola, sino que pasa a char el carácter H.


Se podría crear un array char y pasar ahí el String:

String x = "Hola";

char[] y = x.toCharArray();

Y eso es todo a cuanto conversión de tipos se refiere, en este tutorial no pongo ejercicios porque creo que está bastante claro los ejercicios que deberéis realizar. Tenéis que hacer conversiones de tipos de todas las maneras explicadas y ensayar mucho mucho, y recordad, que si tenéis alguna duda de qué hace un método o los métodos que contiene una clase siempre podéis mirar la Documentación de Java.

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...