1.10 Conversión de Tipos de Datos (Casting o conversión explícita)

Ver el tema anterior Ver el tema siguiente Ir abajo

1.10 Conversión de Tipos de Datos (Casting o conversión explícita)

Mensaje  Diego A. Arista Granda el Dom Feb 16, 2014 1:55 pm

Este tipo de conversiones utiliza los denominados operadores de conversión, molde o cast, y puede ser necesario cuando se precisa un estrechamiento de tipo, conversión en el sentido tipo más alto a tipo más bajo, o en casos como el siguiente para generar una entidad temporal de un nuevo tipo.
El casting se utiliza cuando Java no puede realizar automáticamente la conversión de tipo, generalmente dado que el receptor tiene menos espacio que el tipo de origen, por lo que se hace necesario un casting.
El casting, pues, es la conversión explícita y se realiza anteponiendo al tipo origen el nombre del tipo al que se desea realizar la conversión entre paréntesis:

int intValue= (int) floatValue;
El casting es automático desde los tipos de pequeña ocupación a los de gran ocupación:
longValue=intValue;  /** Permitido. El tipo convertido es menor que el tipo hacia el que se convierte.*/
longValue= (int) intValue;  /** Escrito de forma explícita, no necesario para este caso, pero correcto */
Sin embargo si se quiere hacer la conversión a un tipo más pequeño:
intValue=longValue;  /** El compilador nos lanzaría un error*/
intValue=(int) longValue;  /** Esta permitido, sin embargo corremos el riesgo de pérdida de datos*/

En java existen tipos de datos tanto primitivos como de objetos, es posible declarar una variable con un valor numerico, ya sea entero o decimal, como también puedes declarar caracteres, he aqui los 8 Tipos de datos primitivos:

Enteros:
byte -128 a 127
short -32,768 a 32,767
int -2,147,483,648 a 2,147,483,647
long -9,223,372,036,854,775,808
L a 9,223,372,036,854,775,80 L
Decimales:
float +/- 3.4E+38F (6-7 dígitos importantes)
double +/- 1.8E+308 (15 dígitos importantes)
Boleano:
boolean (Verdadero o falso)
Carácter:
char Conjunto de caracteres Unicode ISO (un carácter)
Cada variable debe ser declarada antes de asignársele un valor, la declaracion es de la forma:
<tipo_de_dato> <nombre_variable>;
Ejemplos:
byte valor;
int valor;
char caracter;
float decimal;
double decimal

Para asignar un valor de una constante o variable en otra se escribe a la izquierda la variable que contendrá el valor seguido de un signo igual (=) y a la derecha el valor constante o variable, si la variable no posee ningún valor se lanzará una excepcion y el programa finalizará.
Para convertir un valor de un tipo de dato primitivo a otro sólo basta con hacer un cast, lo cual consiste en declarar una variable y asignarle un valor como siempre lo uniko ke cambiará será que después del signo igual (=) deberá ir entre paréntesis el tipo de dato de la variable que hemos declarado, luego el valor que se le kiere asignar a la primera variable, Ejemplo:
<tipo_de_dato> <nombre_variable> = (Tipo_de_dato) <valor>;
Sabemos que <valor> puede ser bien una constante o una variable, veamos una conversion de decimal a entero:
double decimal1 = 25.0;
int variable_final = (int) decimal1;
La variable_final tendrá el valor 25 que es la representación entera de 25.0, cuando hacemos esto forzamos a que la asignación sea del tipo deseado, si hubiésemos hecho esto:
double decimal1 = 25.0;
int variable_final = decimal1;
Se hubiera producido un error en al compilar que dice algo así: "required int but double found", o "se requería un int pero se encontró un double".
Para objetos la declaración y asignación se realiza de la misma forma:
<nombre_de_la_clase> <nombre_variable> = <valor>;
Donde valor generalmente es una nueva instancia de una clase, o bien puede ser una variable que contenga una instancia de una clase, ejemplo dada una clase x:
class ejemplo{
ejemplo(){
}
}
La clase ejemplo está vacía, no tiene nada métodos ni variables y el constructor está vacío y no recibe argumentos, pero es una clase cualkiera, instanciable y todo, lo que necesitamos es saber como instanciarla y asignarla:
Declaración:
ejemplo variable_instancia;
variable_instancia = new ejemplo();
O también es posible hacerlo en una sóla línea:
ejemplo variable_instancia = new ejemplo();

by: Diego A. Arista Granda,
Virgilio Chanelo Limones
e Ignacio de Jesús Hernández Chamú

Diego A. Arista Granda

Mensajes : 2
Fecha de inscripción : 16/02/2014
Edad : 22

Ver perfil de usuario

Volver arriba Ir abajo

Re: 1.10 Conversión de Tipos de Datos (Casting o conversión explícita)

Mensaje  Diego A. Arista Granda el Lun Feb 17, 2014 7:48 pm

si tienen dUdas solo pregunten tratare de responderles  Very Happy Shocked Laughing cyclops Arrow Question alien Laughing jejeeejeejej What a Face

Diego A. Arista Granda

Mensajes : 2
Fecha de inscripción : 16/02/2014
Edad : 22

Ver perfil de usuario

Volver arriba Ir abajo

Revisión Del Grupo

Mensaje  Admin el Sáb Feb 22, 2014 10:44 pm

Los felicito por sus participaciones, y para una próxima ocasión los invito a contestar dentro de la sala de discusión que contiene los reactivos, ya que del modo en que usted lo ha hecho, en mi opinión, no es apropiado para contestar preguntas detonadoras, debido a que usted ha abierto una nueva sala, que en teoría se entiende deba utilizarse para un nuevo tema de discusión relacionado con el título del Foro, el cuál será respondido a su vez. Y al parecer con su participación, no ha iniciado algún tema de discusión, sino más bien pretende contestar algún reactivo de otra sala de discusión. Por lo tanto, lo invito para el próximo tema, contestar dentro de la sala, y puede generar nuevos temas afuera, si desea iniciar una nueva discusión en otra temática como una sala de discusión nueva.


ATTE:

M.C. Edgar Rangel Lugo.

Admin
Admin

Mensajes : 312
Fecha de inscripción : 14/03/2012

Ver perfil de usuario http://erangel.foroactivo.mx

Volver arriba Ir abajo

Re: 1.10 Conversión de Tipos de Datos (Casting o conversión explícita)

Mensaje  Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.