知识点讲解:光盘:视频\PPT讲解(知识点)\第3章\类型转换.mp4
在Java程序中,不同基本类型的值经常需要在不同类型之间进行转换。Java语言所提供的7个数值型之间可以相互转换,有自动类型转换和强制类型转换这两种类型转换方式。
如果系统支持把某个基本类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。当把一个取值范围小的数值或变量直接赋给另一个取值范围大的变量时,系统将可以进行自动类型转换。
Java里所有数值型变量之间可以进行类型转换,取值范围小的可以向取值范围大的进行自动类型转换,就如有两瓶水,当把小瓶里的水倒入大瓶中时不会有任何问题。Java支持自动类型转换的类型如图3-23所示。
图3-23 自动类型转换图
在图3-23所示的类型图中,箭头左边的数值可以转换为箭头右边的数值。当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换为字符串类型。虽然字符串类型不再是基本类型,而是引用类型。因此如果希望把基本类型的值转换为对应的字符串,可以把基本类型的值和一个空字符串进行连接。
实例021 演示Java的自动转换
源码路径 \daima\3\zidong.java 视频路径 \视频\实例\第3章\021
实例文件zidong.java的主要代码如下所示。
public class zidong { public static void main(String[] args) { int a = 6; //int可以自动转换为float类型 float f = a; //下面将输出6.0 System.out.println(f); //定义一个byte类型的整数变量 byte b = 9; //下面代码将出错, byte型不能自动类型转换为char型 //char c = b; //下面是byte型变量可以自动类型转换为double型 double d = b; //下面将输出9.0 System.out.println(d); } }
范例041:把基本类型转换为字符串 源码路径:光盘\演练范例\041\ 视频路径:光盘\演练范例\041\ 范例042:判断用户名是否正确 源码路径:光盘\演练范例\042\ 视频路径:光盘\演练范例\042\
执行后的效果如图3-24所示。
图3-24 执行效果
如果希望把图3-23中箭头右边的类型转换为左边的类型,则必须使用强制转换实现。Java中强制类型转换的语法格式如下所示。
(targetType)value
强制类型转换的运算符是圆括号“()”,下面代码【光盘\daima\3\qiangzhi.java】演示了Java中强制类型转换的过程。
public class qiangzhi { public static void main(String[] args) { int iValue = 233; //强制把一个int类型的值转换为byte类型的值 byte bValue =(byte)iValue; //将输出-23 System.out.println(bValue); double dValue = 3.98; //强制把一个double类型的值转换为int int toI =(int)dValue; // 将输出3 System.out.println(toI); } }
在上述代码中,当把一个浮点数强制类型转换为一个整数时,Java将直接截断浮点数的小数部分。除此之外,上面程序还把一个233强制类型转换为byte型整数,从而变成了−23,这就是典型的溢出。