[JavaSE Column 66] Use a palavra-chave instanceof para verificar conversões de tipo explícitas e implícitas

Página inicial do autor : Designer Xiao Zheng
Breve introdução do autor : 3 anos de experiência em desenvolvimento JAVA full-stack, com foco em tecnologia JAVA, personalização de sistema, orientação remota, dedicado à transformação digital corporativa, professor certificado do CSDN College e Blue Bridge Cloud Course.
Direção principal : Vue, SpringBoot, miniaplicativo WeChat

Este artigo explica o conceito e a sintaxe da palavra-chave instanceof e a conversão de tipo explícito e implícito em Java e fornece exemplos de códigos. A conversão de tipo de dados é o processo de converter um valor de um tipo de dados em outro tipo de dados.

insira a descrição da imagem aqui


1. O que é conversão de tipo

A conversão de tipo de dados é o processo de converter um valor de um tipo de dados em outro tipo de dados .

Em Java, a conversão de tipo de dados é dividida principalmente em dois tipos: conversão de tipo implícito e conversão de tipo explícito .

  1. Conversão implícita de tipo : também conhecida como conversão automática de tipo, significa que quando um tipo de dados de pequeno intervalo é atribuído a um tipo de dados de grande intervalo, o compilador Java executará automaticamente a conversão de tipo. Por exemplo, intatribua um valor do tipo a longuma variável do tipo , ou atribua floatum valor do tipo a doubleuma variável do tipo , etc. Como o valor do tipo de intervalo pequeno pode ser totalmente acomodado no tipo de intervalo grande, o compilador executará automaticamente a promoção de tipo sem operações de conversão explícitas.
  2. Conversão de tipo explícita : também conhecida como conversão de tipo obrigatório, significa que ao atribuir um grande intervalo de tipos de dados a um pequeno intervalo de tipos de dados, é necessário usar o operador de conversão de tipo obrigatório para a conversão de tipo. Conversões de tipo explícito requerem escrita manual do código de conversão e atenção para possível estouro de dados ou perda de precisão. Por exemplo, longatribua um valor do tipo a uma variável do tipo int ou atribua doubleum valor do tipo a floatuma variável do tipo, etc.

A conversão de tipo explícito pode ser obtida colocando parênteses ao redor do tipo de destino antes do valor a ser convertido. Por exemplo, int num = (int) 3.14; significa converter 3,14 3,143.14 O valor destedoubletipo é convertido emintum valor do tipo, e o resultado é atribuído ànumvariável.

Ao realizar a conversão de tipo de dados, você precisa prestar atenção à compatibilidade entre os tipos de dados e possíveis problemas de perda ou estouro de dados, portanto, considere cuidadosamente ao realizar a conversão de tipo e garanta a segurança e a racionalidade da operação de conversão.

insira a descrição da imagem aqui


2. Qual é a instância da palavra-chave

Em Java, instanceofé um operador utilizado para verificar se um objeto é uma instância da classe especificada ou de suas subclasses, e sua sintaxe é a seguinte.

object instanceof Class

Dentre eles, objecto objeto a ser verificado Classé a classe a ser verificada. Retorna se objectfor Classuma instância da classe ou de suas subclasses; retorna truese objectnão Classfor uma instância da classe ou de suas subclasses false.

O seguinte é um exemplo, copie e execute-o localmente.

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

Neste exemplo, usamos instanceofo operador para verificar strse a variável é Stringuma instância da classe. Como stré de fato Stringuma instância da classe, resulto valor de é true.

instanceofOs operadores geralmente são usados ​​em conjunto com declarações condicionais no desenvolvimento real para determinar o tipo de um objeto para executar as operações correspondentes . Ele pode ser usado para julgamento e conversão de tipo e para determinar o relacionamento hierárquico de objetos no relacionamento de herança.

Por exemplo, o operador pode ser usado para instanceofdeterminar se um objeto pertence a um tipo de subclasse específico e, em seguida, a operação de coerção de tipo correspondente pode ser executada.

Dica: instanceofOs operadores só podem ser usados ​​para julgar objetos, não tipos de dados básicos. A tentativa de usar um tipo de dados primitivo com instanceofo operador resultará em um erro de compilação.

insira a descrição da imagem aqui


3. Como implementar a conversão de tipo com instanceof

A seguir está um código de exemplo que demonstra como usar instanceofa palavra-chave para conversão de tipo em Java, por favor, estude com cuidado.

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("汪汪汪");
    }
}

No código acima, uma Animalvariável do tipo é primeiro declarada animale instanciada como Catum objeto. Em seguida, usando instanceofa palavra-chave, determine animalse é Catuma instância da classe. Como animalé de fato Catuma instância da classe, a condição é avaliada como true. No bloco de código do julgamento condicional, animalconverta para Cato tipo e atribua-o à catvariável. Em seguida, você pode chamar o método catdo objeto meow(), output 喵喵喵.

Usando instanceofpalavras-chave, podemos verificar primeiro o tipo do objeto e, em seguida, realizar a conversão de tipo com segurança para evitar possíveis exceções de conversão de tipo.

insira a descrição da imagem aqui


4. Cenários de Aplicação de Conversão de Tipo

Em Java, a conversão de tipo é usada principalmente nas seguintes 4 44 cenas, por favor estude cuidadosamente.

  1. Upcasting no relacionamento de herança : quando um objeto de subclasse é atribuído a uma variável do tipo de classe pai, ocorre o upcasting. Fazer isso pode atingir o polimorfismo e melhorar a flexibilidade e a escalabilidade do código.
  2. Downcasting em um relacionamento de herança : Downcasting ocorre quando uma variável de um tipo de superclasse se refere a um objeto de subclasse e o converte para o tipo de subclasse. Fazer isso fornece acesso a métodos e propriedades específicos da subclasse.
  3. A classe de implementação da interface é convertida para o tipo de interface : quando uma classe implementa uma determinada interface, o objeto da classe pode ser convertido para o tipo de interface. Fazer isso pode obter o mesmo comportamento para diferentes objetos e melhorar a escalabilidade do código.
  4. Conversão entre tipos numéricos : quando são necessárias operações ou atribuições entre diferentes tipos numéricos, a conversão de tipo pode ser usada para obter conversão e compatibilidade de dados.

Deve-se observar que, ao realizar a conversão de tipos, deve-se atentar para a compatibilidade entre os tipos. Se os tipos convertidos forem incompatíveis, podem ocorrer erros de compilação ou exceções de tempo de execução. Portanto, ao executar a conversão de tipo, você deve primeiro usar instanceofa palavra-chave para verificação de tipo para garantir a segurança da conversão de tipo.

insira a descrição da imagem aqui


Cinco, tipo perguntas de entrevista de conversão

1. O que é conversão de tipo? Quantos tipos de conversões existem em Java?

A conversão de tipo é o processo de converter um valor de um tipo de dados em outro tipo de dados.

Em Java, existem dois tipos de conversão de tipo: conversão de tipo implícita (conversão de tipo automática) e conversão de tipo explícita (conversão de tipo forçada).

2. O que é conversão implícita de tipo? Por favor, dê um exemplo.

A conversão implícita de tipo refere-se à conversão automática de um tipo de dados de baixa precisão para um tipo de dados de alta precisão .

Por exemplo, ao atribuir um tipo inteiro a uma variável de tipo de ponto flutuante, ocorrerá uma conversão implícita de tipo.

int num = 10;
double decimal = num;

3. O que é uma conversão de tipo explícita? Por favor, dê um exemplo.

()A conversão de tipo explícito refere-se à conversão de um tipo de dados de alta precisão em um tipo de dados de baixa precisão por meio do operador cast .

É claro que conversões de tipo explícitas podem resultar em perda de precisão ou estouro.

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

4. O que é Transformação Ascendente? Por favor, dê um exemplo.

Upcasting refere-se ao processo de atribuir um objeto de subclasse a uma referência de classe pai, que pode atingir o 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. O que é Transformação Descendente? Por favor, dê um exemplo.

Downcasting refere-se ao processo de conversão de uma referência de classe pai em um objeto de subclasse, que requer o uso do operador cast ()para conversão 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. Resumo

Este artigo explica o conceito e a sintaxe da palavra-chave instanceof e a conversão de tipo explícito e implícito em Java e fornece exemplos de códigos.No próximo blog, explicarei os pontos de conhecimento das exceções Java.

insira a descrição da imagem aqui

Acho que você gosta

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