lunes, 8 de junio de 2015

CONVERSIÓN DE TIPOS DE DATOS EN JAVA

CONVERSIÓN DE TIPOS DE DATOS EN JAVA

CONVERSIÓN DE TIPOS DE DATOS EN JAVA

En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con el que fue declarado. Este proceso se denomina "conversión", "moldeado" o "tipado" y es algo que debemos manejar con cuidado pues un mal uso de la conversión de tipos es frecuente que dé lugar a errores.



Una forma de realizar conversiones consiste en colocar el tipo destino entre paréntesis, a la izquierda del valor que queremos convertir de la forma siguiente: Tipo VariableNueva = (NuevoTipo) VariableAntigua;
Por ejemplo: int miNumero = (int) ObjetoInteger;      char c = (char)System.in.read();
En el primer ejemplo, extraemos como tipo primitivo int el valor entero contenido en un campo del objeto Integer. En el segundo caso, la función read devuelve un valor int, que se convierte en un char debido a la conversión (char), y el valor resultante se almacena en la variable de tipo carácter c.
El tamaño de los tipos que queremos convertir es muy importante. No todos los tipos se convertirán de forma segura. Por ejemplo, al convertir un long en un int, el compilador corta los 32 bits superiores del long (de 64 bits), de forma que encajen en los 32 bits del int, con lo que si contienen información útil, ésta se perderá. Este tipo de conversiones que suponen pérdida de información se denominan “conversiones no seguras” y en general se tratan de evitar, aunque de forma controlada pueden usarse puntualmente.
De forma general trataremos de atenernos a la norma de que "en las conversiones debe evitarse la pérdida de información". En la siguiente tabla vemos conversiones que son seguras por no suponer pérdida de información.
TIPO ORIGEN
TIPO DESTINO
byte
double, float, long, int, char, short
short
double, float, long, int
char
double, float, long, int
int
double, float, long
long
double, float
float
Double


No todos los tipos se pueden convertir de esta manera. Como alternativa, existen otras formas para realizar conversiones.


MÉTODO VALUEOF PARA CONVERSIÓN DE TIPOS
El método valueOf es un método sobrecargado aplicable a numerosas clases de Java y que permite realizar conversiones de tipos. Veamos algunos ejemplos de uso.
EXPRESIÓN
INTERPRETACIÓN aprenderaprogramar.com
miInteger = miInteger.valueOf (i)
Con i entero primitivo que se transforma en Integer
miInteger = miInteger.valueOf (miString)
El valor del String se transforma en Integer
miString = miString.valueOf (miBooleano)
El booleano se transforma en String “true” o “false”
miString = miString.valueOf (miChar)
El carácter (char) se transforma en String
miString = miString.valueOf (miDouble)
El double se transforma en String. Igualmente aplicable a float, int, long.

int/double a String

Para transformar un dato "int" en una cadena de caracteres y poder tratarlo como tal "String"
Ejemplo:


/*
   * Convertir int/double a String
   */
  double dou = 25.23;
  int numer = 300;
  String cad1 = String.valueOf(numer);
  String cad2 = String.valueOf(dou);
  JOptionPane.showMessageDialog(null, "Se convirtio correctamente: "+cad1+" ,"+cad2);

String a double

Se realiza de la siguiente manera:


/*
   * Convertir String a double
   */
  String nume = "100.36";
  double n = Double.parseDouble(nume);
  JOptionPane.showMessageDialog(null, "Se convirtio correctamente: "+n);
1.- Convertir de Integer String.- En teoría, un número se puede representar como una cadena de caracteres sin realizar ninguna operación; pero la realidad en JAVA es que si asignamos un dato Integer a una cadena de caracteres, el programa que utilicemos (en mi caso NetBeans) les dará un error de incompatibilidad de tipos. Para realizar aquella asignación, se debe realizar lo siguiente, aplicado a un simple ejemplo.
int a=1;
String b=””;
//En la siguiente línea, realizamos la conversión y asignación del resultado.
b=String.valueOf(a);
//En la siguiente línea imprimimos la cadena almacenada, en consola.
System.out.print(b);
2.- Convertir datos Double String.-En el caso de una conversión de una dato double String, los pasos son los mismos, aplicados el método valueOf() de la clase String.
double a=1.77;
String b=””;
//En la siguiente línea, realizamos la conversión y asignación del resultado.
b=String.valueOf(a);
//En la siguiente línea imprimimos la cadena almacenada, en consola.
System.out.print(b);
3.- Convertir un dato String a Integer.- Convertir un String Integer no es tan sencillo como su opuesto, pues, el caso anterior, tenemos que las cadenas de caracteres aceptan cualquier dato, sea este numérico o especial. En cambio, en el caso de los Integer y los Dobule, solamente aceptan números.
Para esto, vamos a contemplar tres casos, el primero el más sencillo, el segundo un poco más complejo, y el tercero imposible de realizar.
Caso 1. Espacios en blanco al principio o al final de los números.- Se siguen los siguientes pasos ordenados:
int a;
String b=” 222 “;
a=Integer.parseInt(b.trim());
System.out.print(a);
El método parseInt() convierte la cadena en entero; pero como vemos, luego de la variable String llamamos al método trim() que lo que realiza es quitar los espacios en blanco iniciales y finales.
Caso 2. Espacios en blanco entre los números.- Se siguen los siguientes pasos ordenados:
int a;
String b=” 2 2 2 “;
a=Integer.parseInt(b.replaceAll(” “, “”));
System.out.print(a);
Hay que tener en cuenta que para cualquier espacio en blanco, se puede usar el caso dos.
4.- Convertir un dato String a Double.- Este caso es parecido a los enteros, por lo que vamos a resumir la aplicación a un solo método, que se trata del segundo de los datos del tipo entero.
int a;
String b=” 2 2 2 . 4 5 “;
a=Double.parseDouble(b.replaceAll(” “, “”));
System.out.print(a);

No hay comentarios:

Publicar un comentario