[Columna 66 de JavaSE] Use la palabra clave instanceof para verificar las conversiones de tipos explícitas e implícitas

Página de inicio del autor : Diseñador Xiao Zheng
Breve introducción del autor : 3 años de experiencia en desarrollo JAVA full-stack, centrándose en la tecnología JAVA, personalización del sistema, orientación remota, dedicado a la transformación digital empresarial, profesor certificado de CSDN College y Blue Bridge Cloud Course.
Dirección principal : Vue, SpringBoot, subprograma WeChat

Este artículo explica el concepto y la sintaxis de la palabra clave instanceof y la conversión de tipos explícitos e implícitos en Java, y proporciona códigos de muestra. La conversión de tipos de datos es el proceso de convertir un valor de un tipo de datos a otro tipo de datos.

inserte la descripción de la imagen aquí


1. ¿Qué es la conversión de tipos?

La conversión de tipos de datos es el proceso de convertir un valor de un tipo de datos a otro tipo de datos .

En Java, la conversión de tipos de datos se divide principalmente en dos tipos: conversión de tipos implícita y conversión de tipos explícita .

  1. Conversión implícita de tipos : también conocida como conversión automática de tipos, significa que cuando un tipo de datos de rango pequeño se asigna a un tipo de datos de rango grande, el compilador de Java realizará automáticamente la conversión de tipos. Por ejemplo, intasigne un valor de tipo a longuna variable de tipo, o asigne floatun valor de tipo a doubleuna variable de tipo, etc. Debido a que el valor del tipo de rango pequeño se puede acomodar por completo en el tipo de rango grande, el compilador realizará automáticamente la promoción de tipo sin operaciones de conversión explícitas.
  2. Conversión de tipo explícita : también conocida como conversión de tipo obligatoria, significa que cuando se asigna un rango amplio de tipos de datos a un rango pequeño de tipos de datos, es necesario utilizar el operador de conversión de tipo obligatorio para la conversión de tipo. Las conversiones de tipos explícitos requieren la escritura manual del código de conversión y atención al posible desbordamiento de datos o pérdida de precisión. Por ejemplo, longasigne un valor de tipo a una variable de tipo int, o asigne doubleun valor de tipo a floatuna variable de tipo, etc.

La conversión de tipo explícita se puede lograr colocando paréntesis alrededor del tipo de destino antes del valor que se va a convertir. Por ejemplo, int num = (int) 3.14; significa convertir 3.14 3.143.14 El valor de estedoubletipo se convierte enintun valor de tipo y el resultado se asigna anumla variable.

Al realizar la conversión de tipos de datos, debe prestar atención a la compatibilidad entre los tipos de datos y los posibles problemas de pérdida o desbordamiento de datos, por lo que debe considerar cuidadosamente al realizar la conversión de tipos y garantizar la seguridad y la racionalidad de la operación de conversión.

inserte la descripción de la imagen aquí


2. ¿Qué es la palabra clave instanceof?

En Java, instanceofes un operador que se utiliza para comprobar si un objeto es una instancia de la clase especificada o de sus subclases, y su sintaxis es la siguiente.

object instanceof Class

Entre ellos, objectel objeto a comprobar Classes la clase a comprobar. Devuelve si objectes Classuna instancia de la clase o sus subclases; devuelve truesi objectno Classes una instancia de la clase o sus subclases false.

El siguiente es un ejemplo, cópielo y ejecútelo localmente.

public class Main {
    
    
    public static void main(String[] args) {
    
    
        String str = "Hello";
        boolean result = str instanceof String;
        System.out.println(result);  // 输出 true
    }
}

En este ejemplo, usamos instanceofel operador para verificar strsi la variable es Stringuna instancia de la clase. Dado que stres de hecho Stringuna instancia de la clase, resultel valor de es true.

instanceofLos operadores generalmente se usan junto con declaraciones condicionales en el desarrollo real para determinar el tipo de un objeto para realizar las operaciones correspondientes . Se puede utilizar para el juicio y la conversión de tipos, y para determinar la relación jerárquica de los objetos en la relación de herencia.

Por ejemplo, el operador se puede utilizar para instanceofdeterminar si un objeto pertenece a un tipo de subclase específico y luego se puede realizar la operación de coerción de tipo correspondiente.

Sugerencia: instanceoflos operadores solo se pueden usar para juzgar objetos, no tipos de datos básicos. Si intenta utilizar un tipo de datos primitivo con instanceofel operador, se producirá un error de compilación.

inserte la descripción de la imagen aquí


3. Cómo implementar la conversión de tipos con instanceof

El siguiente es un código de muestra que demuestra cómo usar instanceofla palabra clave para la conversión de tipo en Java, estudie detenidamente.

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Animal animal = new Cat();

        if (animal instanceof Cat) {
    
    
            Cat cat = (Cat) animal; // 类型转换
            cat.meow(); // 调用Cat类的方法
        } else if (animal instanceof Dog) {
    
    
            Dog dog = (Dog) animal; // 类型转换
            dog.bark(); // 调用Dog类的方法
        }
    }
}

class Animal {
    
    
    // 公共的父类Animal
}

class Cat extends Animal {
    
    
    public void meow() {
    
    
        System.out.println("喵喵喵");
    }
}

class Dog extends Animal {
    
    
    public void bark() {
    
    
        System.out.println("汪汪汪");
    }
}

En el código anterior, una Animalvariable de tipo primero se declara animaly se instancia como Catun objeto. Luego, usando instanceofla palabra clave, determina animalsi es Catuna instancia de la clase. Dado que animalde hecho es Catuna instancia de la clase, la condición se evalúa como true. En el bloque de código del juicio condicional, animalcámbielo al Cattipo y asígnelo a catla variable. Luego, puede llamar al método catdel objeto meow(), salida 喵喵喵.

Al usar instanceofpalabras clave, primero podemos verificar el tipo del objeto y luego realizar la conversión de tipo de manera segura para evitar posibles excepciones de conversión de tipo.

inserte la descripción de la imagen aquí


4. Escenarios de aplicación de conversión de tipos

En Java, la conversión de tipos se usa principalmente en los siguientes 4 44 escenas, estudie cuidadosamente.

  1. Upcasting en la relación de herencia : cuando un objeto de subclase se asigna a una variable del tipo de clase principal, se produce upcasting. Si lo hace, puede lograr polimorfismo y mejorar la flexibilidad y escalabilidad del código.
  2. Downcasting en una relación de herencia : Downcasting ocurre cuando una variable de un tipo de superclase se refiere a un objeto de subclase y lo convierte al tipo de subclase. Si lo hace, proporciona acceso a métodos y propiedades específicas de la subclase.
  3. La clase de implementación de la interfaz se convierte al tipo de interfaz : cuando una clase implementa una determinada interfaz, el objeto de la clase se puede convertir al tipo de interfaz. Si lo hace, puede lograr el mismo comportamiento para diferentes objetos y mejorar la escalabilidad del código.
  4. Conversión entre tipos numéricos : cuando se requieren operaciones o asignaciones entre diferentes tipos numéricos, se puede utilizar la conversión de tipos para lograr la conversión y compatibilidad de datos.

Cabe señalar que al realizar la conversión de tipo, se debe prestar atención a la compatibilidad entre tipos. Si los tipos convertidos son incompatibles, pueden producirse errores de compilación o excepciones de tiempo de ejecución. Por lo tanto, al realizar la conversión de tipos, primero debe usar instanceofla palabra clave para la verificación de tipos para garantizar la seguridad de la conversión de tipos.

inserte la descripción de la imagen aquí


Cinco preguntas de entrevista de conversión de tipo

1. ¿Qué es la conversión de tipos? ¿Cuántos tipos de conversiones hay en Java?

La conversión de tipos es el proceso de convertir un valor de un tipo de datos a otro tipo de datos.

En Java, hay dos tipos de conversión de tipo: conversión de tipo implícita (conversión de tipo automática) y conversión de tipo explícita (conversión de tipo forzada).

2. ¿Qué es la conversión de tipos implícita? Por favor, da un ejemplo.

La conversión de tipo implícita se refiere a la conversión automática de un tipo de datos de baja precisión a un tipo de datos de alta precisión .

Por ejemplo, al asignar un tipo entero a una variable de tipo de coma flotante, se producirá una conversión de tipo implícita.

int num = 10;
double decimal = num;

3. ¿Qué es una conversión de tipo explícita? Por favor, da un ejemplo.

()La conversión de tipo explícito se refiere a convertir un tipo de datos de alta precisión en un tipo de datos de baja precisión a través del operador de conversión .

Por supuesto, las conversiones de tipos explícitas pueden provocar una pérdida de precisión o un desbordamiento.

double decimal = 3.14;
int num = (int) decimal;

4. ¿Qué es la Transformación Ascendente? Por favor, da un ejemplo.

Upcasting se refiere al proceso de asignar un objeto de subclase a una referencia de clase principal, que puede lograr polimorfismo.

class Animal {
    
    
    public void eat() {
    
    
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    
    
    public void eat() {
    
    
        System.out.println("Dog is eating");
    }
}

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Animal animal = new Dog(); // 向上转型
        animal.eat(); // 输出:Dog is eating
    }
}

5. ¿Qué es la transformación hacia abajo? Por favor, da un ejemplo.

Downcasting se refiere al proceso de convertir una referencia de clase principal en un objeto de subclase, lo que requiere el uso del operador de conversión ()para la conversión de tipo.

class Animal {
    
    
    public void eat() {
    
    
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    
    
    public void eat() {
    
    
        System.out.println("Dog is eating");
    }
    
    public void bark() {
    
    
        System.out.println("Dog is barking");
    }
}

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Animal animal = new Dog(); // 向上转型
        Dog dog = (Dog) animal; // 向下转型
        dog.bark(); // 输出:Dog is barking
    }
}

6. Resumen

Este artículo explica el concepto y la sintaxis de la palabra clave instanceof y la conversión de tipos explícitos e implícitos en Java, y brinda códigos de muestra. En el próximo blog, explicaré los puntos de conocimiento de las excepciones de Java.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41464123/article/details/132096164
Recomendado
Clasificación