购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 数据类型的转换

Java语言的数据类型定义很严谨,不允许数据类型之间随意转换(Conversion),也就是说原本把变量声明为int数据类型,如果给它赋予char类型的数据,在编译时就会发生错误。数据转换的方式有两种:一种是“由小变大”;另一种是“由大变小”。

2.4.1 由小变大模式

如果“目的变量”和“源变量或数据”之间的类型不相同,在转换时符合两个条件,转换后的源变量或数据类型就不会影响数值的精度。“由小变大”的转换机制会“自动转换”,而不会损失数据的精确度。下面列出转换的机制:


double(双精度浮点数)> float(浮点数)> long(长整数)> int(整数)> char(字符)> short(短整数)> byte(字节)

·转换类型之间必须兼容。例如short(短整数)可以和int(整数)互相转换,但不可以和byte(字节)互相转换。

·“目的变量”的数据类型必须大于“源变量或数据”的数据类型,也就是以数值范围较大的为主。例如short(短整数)可以和int(整数)互相转换;int(整数)可以和long(长整数)互相转换。

2.4.2 由大变小模式

“由大变小”的转换机制需“指定转换”,当“目的变量”的数据类型小于“源变量或数据”的数据类型时,使用的转换语法如下:


(指定类型) 数据 | 变量;    // 注意括号不可省略

所谓“指定类型”是指目的类型。“数据|变量”指的是源变量或数据。数值大范围的数据类型转换成数值小范围的数据类型时,部分数据可能会被截去,即损失了精度。例如,声明两个整数变量分别为X和Y,并各赋予了初值,X=19、Y=4。如果进行除法运算“X/Y”,那么运算的结果(Z)为4,但是如果希望计算结果的精确度能够到小数点后面,结果的类型就不能使用“整数int”,正确的做法应该是采用“强制类型转换”的方式来重新定义参与计算的变量值或数值:


Z=(float)X / (float)Y; // 先将X和Y原来声明的整数类型强制转变成浮点数类型

【范例程序:CH02_08】


01    //程序:CH02_08.java,数据类型的转换
02    public class CH02_08 {
03        public static void main(String[ ] args) {
04            int i=10;
05            byte b=(byte) i;
06            byte b1=65;
07            char c=(char)b1;
08            System.out.println("i="+i);
09            System.out.println("b="+b);
10            System.out.println("b1="+b1);
11            System.out.println("c="+c);
12        }
13    }

【程序的执行结果】

程序的执行结果可参考图2-11。

图2-11 XPlzDWKwBo9WHQnce/2RdGZf1chb6lGUji6sKfP6sBISCYCcrXSYMuseKjJOaFMu

点击中间区域
呼出菜单
上一章
目录
下一章
×