四时宝库

程序员的知识宝库

Java数据类型转换

在 Java 中,数据类型转换(Type Casting)是将一种数据类型的值转换为另一种数据类型的过程。数据类型转换可以分为两种:自动类型转换(隐式转换)和强制类型转换(显式转换)。

1.5.1 自动类型转换(隐式转换)

自动类型转换发生在以下情况下:

  • 目标类型比源类型更大(即目标类型能够容纳源类型的所有可能值)。
  • 从整数类型转换为浮点类型。
int a = 100;
long b = a; // 隐式类型转换,int自动转换为long

1.5.1.1 整自动类型转换顺序

1.5.2 强制类型转换(显式转换)

强制类型转换发生在以下情况下:

  • 目标类型比源类型更小(即目标类型不能容纳源类型的所有可能值)。
  • 从浮点类型转换为整数类型。

强制类型转换需要使用括号 () 将目标类型括起来,并放在源类型值的前面。

double d = 9.99;
int i = (int) d; // 显式类型转换,double强制转换为int,注意这会丢失小数部分

# 引用数据类型转换拓展

对于引用数据类型(如类、接口、数组等),转换通常涉及对象的多态性和继承关系。

1. 向上转型(Upcasting)
将子类对象赋值给父类引用时,会发生向上转型。这是隐式的,因为父类引用可以指向子类对象。

示例:
	Parent p = new Child(); // 向上转型,Child是Parent的子类
    
2. 向下转型(Downcasting)
将父类引用强制转换为子类引用时,会发生向下转型。这是显式的,因为父类引用可能指向的不是子类对象,所以需要进行检查(通常使用instanceof关键字)。

示例:
  Parent p = new Child();  
	if (p instanceof Child) {  
    	Child c = (Child)p;  // 向下转型,需要显式地进行强制类型转换  
	}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接