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:
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 a 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);
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 a String.-En el caso de una
conversión de una dato double a 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);
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 a 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);
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);
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);
String b=” 2 2 2 . 4 5 “;
a=Double.parseDouble(b.replaceAll(” “, “”));
System.out.print(a);

No hay comentarios:
Publicar un comentario