自动类型转换
范围类型小的变量,可以直接赋值给范围类型大的变量
byte→short→int→long→float→double
char↗
注意:char类型虽然是2个字符,但是不可以转换成short
(因为short是有正负取值,而char取值只有正)
package com.dazz.type; public class TypeDemo { public static void main(String[] args) { // 自动类型转换 byte b = 1;//1 int i = b;//1 double d = i;//1.0 char a = 'a';//97 :00000000 01100001 int i1 = a ;//97 :00000000 00000000 00000000 01100001 } }
1.为什么要进行类型转换?
存在不同类型的变量赋值给其他类型的变量
2.自动类型转换是什么样?
类型范围小的变量,可以直接赋值给类型范围大的变量
表达式的自动类型转换
在表达式中,小范围类型的变量会自动转换成当前较大范围的类型在运算
byte short char→int→long→float→double
注意:表达式的最终结果类型由表达式中的最高类型决定
在表达式中,byte,short,char是直接转换成int类型参与运算
package com.dazz.type; public class TypeDome2 { public static void main(String[] args) { byte b = 1; short s = 2; int i = 3; double d = 4; double max = b+s+i+d;//10.0 byte b1 = 100; byte b2 = 120; // 错误:byte maxb = b1+b2; //byte short char 自动转换成 int int maxi = b1+b2; } }
1.表达式的自动类型转换是什么样?
小范围的类型会自动转换成大范围的类型运算
2.表达式的最终结果类型是由谁决定?
最终类型由表达式中最高类型决定
3.表达式的注意事项
byte short char 是直接转换成int类型参与运算的
强制类型转换
范围类型大的变量,强制赋值给范围类型小的变量
格式:
数据类型 变量 = (数据类型)变量 或 数据;
注意:
强制类型转换可能造成数据(丢失)溢出
浮点型强制转换整型,会直接丢失小数部分,保留整数部分返回
package com.dazz.type; public class TypeDemo3 { public static void main(String[] args) { int i = 10; byte b = (byte) i;//10 int i1 = 1500; byte b1 = (byte) i1;//-36 数据丢失 double d = 10.5; int i2 = (int) d;//10 抹去了小数,数据丢失 } }
1.什么是强制类型转换?
可以强行将类型范围大的变量,数据赋值给类型范围小的变量
格式:数据类型 变量 = (数据类型)变量 或 数据;
2.强制类型转换有那些注意的?
可能出现数据丢失
小数强制转换成整数,会丢失小数部分保留整数