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.
Índice
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 .
- 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,
int
atribua um valor do tipo along
uma variável do tipo , ou atribuafloat
um valor do tipo adouble
uma 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. - 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,
long
atribua um valor do tipo a uma variável do tipo int ou atribuadouble
um valor do tipo afloat
uma 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 destedouble
tipo é convertido emint
um valor do tipo, e o resultado é atribuído ànum
variá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.
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, object
o objeto a ser verificado Class
é a classe a ser verificada. Retorna se object
for Class
uma instância da classe ou de suas subclasses; retorna true
se object
não Class
for 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 instanceof
o operador para verificar str
se a variável é String
uma instância da classe. Como str
é de fato String
uma instância da classe, result
o valor de é true
.
instanceof
Os 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 instanceof
determinar 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:
instanceof
Os operadores só podem ser usados para julgar objetos, não tipos de dados básicos. A tentativa de usar um tipo de dados primitivo cominstanceof
o operador resultará em um erro de compilação.
3. Como implementar a conversão de tipo com instanceof
A seguir está um código de exemplo que demonstra como usar instanceof
a 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 Animal
variável do tipo é primeiro declarada animal
e instanciada como Cat
um objeto. Em seguida, usando instanceof
a palavra-chave, determine animal
se é Cat
uma instância da classe. Como animal
é de fato Cat
uma instância da classe, a condição é avaliada como true
. No bloco de código do julgamento condicional, animal
converta para Cat
o tipo e atribua-o à cat
variável. Em seguida, você pode chamar o método cat
do objeto meow()
, output 喵喵喵
.
Usando
instanceof
palavras-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.
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.
- 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.
- 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.
- 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.
- 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 instanceof
a palavra-chave para verificação de tipo para garantir a segurança da conversão de tipo.
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.