Buscar..


Sintaxis

  • TargetType target = (SourceType) fuente;

Fundición primitiva no numérica

El tipo boolean no se puede convertir a / desde ningún otro tipo primitivo.

Se puede convertir un char a / desde cualquier tipo numérico utilizando las asignaciones de punto de código especificadas por Unicode. Un char se representa en la memoria como un valor entero de 16 bits sin signo (2 bytes), por lo que la conversión a byte (1 byte) eliminará 8 de esos bits (esto es seguro para los caracteres ASCII). Los métodos de utilidad de la clase de Character utilizan int (4 bytes) para transferir a / desde valores de punto de código, pero un short (2 bytes) también sería suficiente para almacenar un punto de código Unicode.

int badInt   = (int)  true; // Compiler error: incompatible types

char char1   = (char)   65; // A
byte byte1   = (byte)  'A'; // 65
short short1 = (short) 'A'; // 65
int int1     = (int)   'A'; // 65

char char2   = (char) 8253; // ‽
byte byte2   = (byte)  '‽'; // 61 (truncated code-point into the ASCII range)
short short2 = (short) '‽'; // 8253
int int2     = (int)   '‽'; // 8253

Fundición primitiva numérica

Los primitivos numéricos se pueden convertir de dos maneras. La conversión implícita ocurre cuando el tipo de origen tiene un rango más pequeño que el tipo de destino.

//Implicit casting
byte byteVar = 42;
short shortVar = byteVar;
int intVar = shortVar;
long longVar = intvar;
float floatVar = longVar;
double doubleVar = floatVar;

La conversión explícita se debe realizar cuando el tipo de origen tiene un rango mayor que el tipo de destino.

//Explicit casting
double doubleVar = 42.0d;
float floatVar = (float) doubleVar;
long longVar = (long) floatVar;
int intVar = (int) longVar;
short shortVar = (short) intVar;
byte byteVar = (byte) shortVar;

Cuando se lanzan primitivas de punto flotante ( float , double ) a primitivas de números enteros, el número se redondea hacia abajo .

Fundición de objetos

Al igual que con los primitivos, los objetos pueden ser lanzados tanto explícita como implícitamente.

La conversión implícita ocurre cuando el tipo de origen extiende o implementa el tipo de destino (conversión a una superclase o interfaz).

La conversión explícita se debe realizar cuando el tipo de origen es extendido o implementado por el tipo de destino (conversión a un subtipo). Esto puede producir una excepción de tiempo de ejecución ( ClassCastException ) cuando el objeto que se está emitiendo no es del tipo de destino (o del subtipo del destino).

Float floatVar = new Float(42.0f);
Number n = floatVar;                //Implicit (Float implements Number)
Float floatVar2 = (Float) n;        //Explicit
Double doubleVar = (Double) n;      //Throws exception (the object is not Double)

Promoción Numérica Básica

 static void testNumericPromotion() {

    char char1 = 1, char2 = 2;
    short short1 = 1, short2 = 2;
    int int1 = 1, int2 = 2;
    float float1 = 1.0f, float2 = 2.0f;

    // char1 = char1 + char2;      // Error: Cannot convert from int to char;
    // short1 = short1 + short2;   // Error: Cannot convert from int to short;
    int1 = char1 + char2;          // char is promoted to int.
    int1 = short1 + short2;        // short is promoted to int.
    int1 = char1 + short2;         // both char and short promoted to int.
    float1 = short1 + float2;      // short is promoted to float.
    int1 = int1 + int2;            // int is unchanged.
}

Probar si un objeto puede ser lanzado usando instanceof

Java proporciona el operador instanceof para probar si un objeto es de un tipo determinado o una subclase de ese tipo. El programa puede elegir lanzar o no ese objeto en consecuencia.

Object obj = Calendar.getInstance();
long time = 0;

if(obj instanceof Calendar)
{
    time = ((Calendar)obj).getTime();
}
if(obj instanceof Date)
{
    time = ((Date)obj).getTime(); // This line will never be reached, obj is not a Date type.
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow