Java类型转换的2种方式(自动类型转换和强制类型转换)
在 Java 程序中,整型、实型(常量)、字符型数据可以混合运算。运算过程中,不同类型的数据先转化为同一类型,然后进行运算,或者当一种数据类型变量的值赋给另外一种数据类型的变量时,也会涉及数据类型的转换。
数据类型的转换有两种方式,分别是自动类型转换(隐式类型转换)和强制类型转换(显式类型转换)。
除了布尔型不参与转换外,其他数据类型转换的顺序如下:
【实例】自动类型转换。
强制类型转换的语法规则如下:
例如:
需要注意的是,强制类型转换可能会导致数据精度的损失。例如如下代码:
另外,浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如如下代码:
数据类型的转换有两种方式,分别是自动类型转换(隐式类型转换)和强制类型转换(显式类型转换)。
Java自动类型转换(隐式类型转换)
从低级类型向高级类型的转换,系统自动执行,程序员无须进行任何操作,这种类型的转换称为隐式转换。除了布尔型不参与转换外,其他数据类型转换的顺序如下:
byte,short,char -->int -->long -->float -->double当进行赋值运算时,目标类型大于源类型,会自动进行类型转换。例如,在计算表达式的值时,参与运算的数据只要有一个是 double 型,则其他数据都会自动转换为 double,然后再进行运算,最后表达式的结果也是 double 型。
【实例】自动类型转换。
public class AutoConvert { public static void main(String[] args) { char c1 = 'a'; // 定义一个 char 类型 int i1 = c1; // char 自动类型转换为 int System.out.println("char 自动类型转换为 int 后的值等于 " + i1); char c2 = 'A'; // 定义一个 char 类型 int i2 = c2 + 1; // char 类型和 int 类型计算 System.out.println("char 类型和 int 计算后的值等于 " + i2); } }程序运行结果为:
char 自动类型转换为 int 后的值等于 97 char 类型和 int 计算后的值等于 65c1 的值为字符 a,查 ASCII 码表可知对应 int 类型值为 97,A 对应值为 65,所以 i2=65+1=66。
Java强制类型转换(显式类型转换)
当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算,又称强制类型转换。强制类型转换的语法规则如下:
(type)variableName;其中,type 为 variableName 要转换的数据类型,而 variableName 是要进行类型转换的变量名称。
例如:
int a = 3; double b = 5.0; a = (int)b; //将double类型的变量b的值转换为int类型,然后赋值给变量a如果此时输出 a 的值,结果是 5。
需要注意的是,强制类型转换可能会导致数据精度的损失。例如如下代码:
int i =128; byte b = (byte)i;因为 byte 类型是 8 位,最大值为 127,所以当 int 强制转换为 byte 类型时,值达到 128 时候就会导致溢出。
另外,浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如如下代码:
(int)23.7 == 23; (int)-45.89f == -45