目录
在编写代码时,使用合适的数据类型,可以更好的优化内存和程序性能
Java中,有两种数据类型的转换,分别是隐式数据类型转换和显示数据类型转换
隐式数据类型转换
隐式数据类型转换又称为自动类型转换,是指较小的数据类型可以自动的转换为较大的数据类型,而不需要显示转换。
这种转换是由编译器自动完成的,不需要额外的代码。
隐式转换的规则:
取值范围小的与范围大的运算,小的会先提升为大的,再进行计算
byte, short, char这三种数据类型的数据在进行计算时,会先提升为int,再进行计算
可以理解为小瓶子里装的水可以装入大的瓶子里,不会发生溢出,仅仅是大瓶子没有装满而浪费空间
但是大瓶子装入小瓶子就有可能发生溢出(大瓶子只装了一点时,倒入小瓶子也不会发生溢出,所以是有可能发生溢出)
如上图所示,byte类型的变量可以装入short类型的“桶”里,但是short类型的变量装入byte类型的“桶”里时就有可能发生溢出,从而导致数据丢失
int i = 100;
long l = i; // 隐式转换,int 转换为 long
显示数据类型转换
显示数据类型转换又称为强制类型转换,是指程序员需要再代码中明确指定将一个数据类型转换为另一个数据类型,通常发生在较大数据类型转换为较小数据类型时
强制类型转换的格式:
目标数据类型 变量名 = (目标数据类型)被强制转换的数据
需要注意的是:数据较大时,强制转换可能会发生错误
double d = 123.456;
int i = (int) d; // 显式转换,double 转换为 int,可能会丢失小数部分
对象之间的转换
类型提升(向上转型)示例:
// 子类对象到父类对象的转换
ParentClass parent = new ChildClass(); // 自动转换,无需显式转换代码
类型降低(向下转型)示例:
// 父类对象到子类对象的转换
ParentClass parent = new ParentClass();
ChildClass child = (ChildClass) parent; // 显式转换,需要类型转换,可能抛出 ClassCastException
包装类与基本数据类型之间的转换
自动装箱与拆箱
javaInteger integerObject = 5; // 自动装箱
int intValue = integerObject; // 自动拆箱
显式转换包装类到基本数据类型
Integer integerObject = new Integer(10);
int intValue = integerObject.intValue(); // 显式调用 intValue() 方法进行转换
integerObject.intValue()
方法是 Integer
类的一个实例方法,用于将 Integer
类型的包装类对象转换回其对应的基本数据类型 int
。
字符串与其他类型之间的转换
字符串到基本数据类型
javaString strInt = "123";
int intValue = Integer.parseInt(strInt); // 显式转换
Integer.parseInt()
是 Java 中 Integer
类的一个静态方法,用于将字符串解析为 int
类型的整数。
基本数据类型到字符串
int intValue = 123;
String strInt = String.valueOf(intValue); // 显式转换
String.valueOf
是Java中 String
类的一个静态方法,它用于将任意类型的数据转换成字符串形式。