java隐式类型转换

从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高排列的顺序为:byte < short < int < long < float < double

[例子]使用int型变量为float型变量赋值,此时int型变量将隐式转换成float型变量。实例代码如下:

int x = 50;    //声明int型变量x
float y = x;    //将x赋值给y

此时执行输出语句,y的结果将是50.0。

隐式类型的转换也要遵循一定的规则,来解决在什么情况下将哪种类型的数据转换成另一种类型的数据。下表列出了各种数据类型转换的一般规则。

操作数1的数据类型操作数2的数据类型转换后的数据类型
byte、short、charintint
byte、short、char、intlonglong
byte、short、char、int、longfloatfloat
byte、short、char、int、long、floatdoubledouble

下面通过一个简单实例介绍数据类型隐式转换。
[例子]在项目中创建类Conver,在主方法中创建不同数值型的变量,实现将各变量隐式转换。

public class Conver { // 创建类
	public static void main(String[] args) {
		// 定义byte型变量mybyte,并把byte型变量允许的最大值赋给mybyte
		byte mybyte = 127;
		int myint = 150; // 定义int型变量myint,并赋值150
		float myfloat = 452.12f; // 定义float型变量myfloat,并赋值
		char mychar = 10; // 定义char型变量mychar,并赋值
		double mydouble = 45.46546; // 定义double型变量,并赋值
		System.out.println("byte型与float型数据进行运算结果为:" + (mybyte + myfloat));
		/* 将运算结果输出 */
		System.out.println("byte型与int型数据进行运算结果为:" + mybyte * myint);
		System.out.println("byte型与char型数据进行运算结果为:" + mybyte / mychar);
		System.out
				.println("double型与char型数据进行运算结果为:" + (mydouble + mychar));
	}
}

运行结果如图

运行结果

要理解类型转换,读者可以这么想象,大脑前面是一片内存,源和目标分别是两个大小不同的内存块(由变量及数据的类型来决定),将源数据赋值给目标内存的过程,就是用目标内存块尽可能多地套取源内存中的数据。

发表评论