3.3 数据类型的转换
数据类型转换方式分为“自动类型转换”和“强制类型转换”。
3.3.1 数据类型的自动转换
也称扩大转换,不影响原先数据定义,且保证精度
条件:1.转换前的数据类型与转换后的类型兼容
2.转换前的数据类型范围比转换后的小
eg:short——>int,均为整数类型,且int范围更大
package com; public class DataDemo08 { public static void main(String[] args) { int x=30; //定义整型变量 float y=22.19f; //定义浮点型变量 System.out.println("x/y="+x/y); //除法操作 System.out.println("10/3.5="+10/3.5); //直接使用常量进行除法 System.out.println("10/3="+10/3); //直接使用常量进行除法 } }
x/y=1.3519603 10/3.5=2.857142857142857 10/3=3 Process finished with exit code 0
整型和双精度浮点型运算时,Java会把整型转化为双精度浮点型后再计算,计算结果也是双精度浮点型。
提示:任何类型的数据都向String转型。
1.String可以像普通变量那样直接通过赋值的方式进行声明。字符串是使用“”括起来。两个字符之间可以使用+连接
2. 任何数据类型碰到String类型的变量或常量之后都向String类型转换
package com; public class DataDemo09 { public static void main(String[] args) { int i=1; int j=2; System.out.println("1+2="+i+j);//碰到字符串常量,所有数据类型默认字符串,+表示字符串连接 System.out.println("1+2="+(i+j));//加上括号之后,表示输出时先计算相加结果 } }
1+2=12 1+2=3 Process finished with exit code 0
3.3.2 数据类型的强制转换
因为这种强制转换是直接编写在代码中的,所以又称显示转换。
语法:(要转换的数据类型)变量名称;
package com; public class DataDemo10 { public static void main(String[] args) { float f=30.3f; //定义浮点型变量 int x=(int)f; //强制转换为int型 System.out.println("x="+x); //输出转型之后的值 System.out.println("10/3="+((float)10/3)); //常量计算使用强制类型转换 因为将其中一个整型变量变为了float类型,所以在计算时会强制把其他的整型也变成float类型,所以结果包含小数 } }
x=30 10/3=3.3333333 Process finished with exit code 0
范围大的向范围小的转换称为缩小转换,可能丢失精度,因为不会自动转换,必须强制转换