本帖最后由 百里青山 于 2016-4-6 12:53 编辑
Java的类型转换 自动转换类型图 boolean(1)->byte(8)->char(16),short(16)->int(32)->long(64)->float(32)->double(64) 基本类型的转换 1.当要把自动转换类型图中箭头左边类型转换为右边类型,则会发生自动类型转换。 int a = 100; float b = a; // int类型可以自动转换为float类型 2.把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,则会发生自动类型转换。 byte a = 3; double b = a; char c = a; // 因char是无符号,而byte是有符号,所以尽管char的长度比byte 大,也不能完全兼容byte. 3.任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动转换成字符串类型。 system.out.printle(22 + "hello!"); //输出"22hello!" 4.当要把自动转换类型图中的右边类型转换为左边类型,则必须进行强制类型转换 double a = 11111111.11; byte b = (byte)a; // 会发生截断,精度缺失 5.在表达式中所有的byte,short,char类型将被提升到int类型 byte a = 4; int b = a - 2; // a自动提升到int 6.整个算术表达式的数据类型自动提升到表达式中最高等级操作数同样的类型 byte a = 20; char b = 'b'; double c = .122; int d = 11; double result = a + b + c + d; // 右边最高等级操作数类型是double 7.自动类型转换图中,箭头左边类型的直接量可以直接赋给箭头右边类型的变量 int a = 'h'; 8.自动类型转换图中,箭头右边类型的直接量赋给箭头左边类型的变量,需要强制转换 int a = (int)4.555; // double直接量赋给int 9.基本类型之间的转换只能在数值类型之间进行,数值类型包括整数型,字符型和浮点型,但布尔类型和数值类型不能进行类型转换。 int a = 10; boolean b = (boolean)a; // 发生错误 10.引用类型之间的转换只能在具有继承关系的两个类型之间进行,如果是两个没有任何继承关系的类型,则无法进行转换。 class A{ } class B{ } A a = new A(); B b = (B)a; // 发生错误 |