📜  Java类型转换(1)

📅  最后修改于: 2023-12-03 15:16:38.477000             🧑  作者: Mango

Java类型转换

Java 中类型转换是将一种数据类型的值转换成另一种数据类型的值的过程。在 Java 中类型转换可以分为两大类:隐式类型转换和显式类型转换。

隐式类型转换

隐式类型转换也叫做自动类型转换,是指 Java 在运行过程中自动将一种数据类型的值转换成另一种数据类型的值,例如将 byte 类型转换为 int 类型。在进行隐式类型转换时,会从数据类型范围较小的类型转换为数据类型范围较大的类型,这样做是安全的,因为转换后的数据类型可以容纳原始类型的数据。

隐式类型转换规则

  • 从数据类型范围较小的类型转换为数据类型范围较大的类型。

  • 例如:byte->short->int->long->float->double

  • char 类型会被转换为 int 类型,因为 char 类型只占用 16 位,而 int 类型占用 32 位。

  • 所有的浮点数类型都会被转换为 double 类型。

  • 转换时会自动提升类型,变量的类型提升到表达式的类型。

隐式类型转换示例

byte b = 100;
int i = b;
System.out.println(i); // 100

char c = 'A';
int j = c;
System.out.println(j); // 65

int k = 10;
float f = k;
System.out.println(f); // 10.0

long l = 1000;
double d = l;
System.out.println(d); // 1000.0
显式类型转换

显式类型转换也叫做强制类型转换,是指 Java 中将一个数据类型强制转换为另一个数据类型的过程。在进行显式类型转换时,必须使用强制转换操作符,在需要转换的数据类型前加上括号,例如:(int) 3.14,将 double 类型的值 3.14 转换成 int 类型的值。

显式类型转换规则

  • 将数据类型范围较大的类型转换成数据类型范围较小的类型。在进行转换时可能会发生数据精度丢失的情况,需要注意。

  • 转换时可能会出现溢出的情况,需要注意。

  • 可以将浮点数类型转换成整数类型,但该操作会将小数部分截断掉。

显式类型转换示例

double d = 3.14;
int i = (int) d;
System.out.println(i); // 3

long l = 10000000000L;
int j = (int) l;
System.out.println(j); // 276447232

int k = 97;
char c = (char) k;
System.out.println(c); // a
instanceof 关键字

instanceof 关键字用于检查一个对象是否是一个类的实例,或者是这个类子类的实例。

instanceof 用法

class Animal {}
class Dog extends Animal {}

public static void main(String[] args) {
  Animal animal = new Animal();
  Dog dog = new Dog();

  System.out.println(animal instanceof Animal); // true
  System.out.println(animal instanceof Dog); // false
  System.out.println(dog instanceof Animal); // true
  System.out.println(dog instanceof Dog); // true
}
总结

Java 中类型转换是将一种数据类型的值转换成另一种数据类型的值的过程。在 Java 中类型转换可以分为两大类:隐式类型转换和显式类型转换。在进行隐式类型转换时,会从数据类型范围较小的类型转换为数据类型范围较大的类型。在进行显式类型转换时,必须使用强制转换操作符,在需要转换的数据类型前加上括号。使用 instanceof 关键字可以检查一个对象是否是一个类的实例。