浅谈java数据类型间的转换
2014-11-07 11:40
162 查看
如有什么错误的地方还望不吝赐教,共同进步,好了直奔正题吧。
数据类型转换是将一种数据类型的值转换成另一种数据类型的操作。
一、数值类型转换
当一个运算中,一个操作数是整数,另一数是浮点数,java会自动的将整数转换成浮点数,如1*1.3就会变成1.0*1.3 也就是说,java可以将一个数值赋值给支持更大数值范围类型的变量,例如可以将long型的值赋给float型变量。将一个小范围类型的变量转换成大范围的变量叫拓宽类型, 把大范围类型的变量转换成小范围的叫缩窄类型。拓宽类型不需要显示转换,可以自动转换。缩窄类型必须显示完成。
类型转换的语法是目标类型放在括号内,紧跟其后的是要转换的变量名。
例如:System.out.println((double)1/2);结果为0.5,因为1首先被转换成1.0 然后再去除以2
System.out.println(1.0/2); 结果为0.5
System.out.println(1/2); 结果为0,因为1和2都是整数,对他们做除法的结果也必须是整数
二、字符型char与数值型数据间的转换
char型数据可以转换成任意一种数值类型,反之亦然。
整数转换成char型,只用到该数据的低十六位。
如:char ch=(char)0x1b0041; //0x开头的是十六位进制数
System.out.println(ch); //低十六位就是0041,它是“A”的ASCII码,所以结果就是A
浮点数转换成char型时,首先将浮点值转换成int型,然后在转换成char型。
如:char ch=(char)65.69; //这里其实是将65分配到ch里
System.out.println(ch); // 打印结果为A(A的ASCII码十进制数就是65)
再如:int i=(int)'A';
System.out.println(i); //打印结果为65
如果转换结果适用于目标变量,就可以使用隐式转换方式,否则必须使用显示转换方式。
如:byte b='a'; int i='a'; //因为‘a’的统一码是97,它在一个字节范围内,所以可以用隐式转换方式
但\u1234超过一个字节范围内,需要强制赋值,所以要用显示转换方式
byte b=(byte)'\u1234';
数据类型转换是将一种数据类型的值转换成另一种数据类型的操作。
一、数值类型转换
当一个运算中,一个操作数是整数,另一数是浮点数,java会自动的将整数转换成浮点数,如1*1.3就会变成1.0*1.3 也就是说,java可以将一个数值赋值给支持更大数值范围类型的变量,例如可以将long型的值赋给float型变量。将一个小范围类型的变量转换成大范围的变量叫拓宽类型, 把大范围类型的变量转换成小范围的叫缩窄类型。拓宽类型不需要显示转换,可以自动转换。缩窄类型必须显示完成。
类型转换的语法是目标类型放在括号内,紧跟其后的是要转换的变量名。
例如:System.out.println((double)1/2);结果为0.5,因为1首先被转换成1.0 然后再去除以2
System.out.println(1.0/2); 结果为0.5
System.out.println(1/2); 结果为0,因为1和2都是整数,对他们做除法的结果也必须是整数
二、字符型char与数值型数据间的转换
char型数据可以转换成任意一种数值类型,反之亦然。
整数转换成char型,只用到该数据的低十六位。
如:char ch=(char)0x1b0041; //0x开头的是十六位进制数
System.out.println(ch); //低十六位就是0041,它是“A”的ASCII码,所以结果就是A
浮点数转换成char型时,首先将浮点值转换成int型,然后在转换成char型。
如:char ch=(char)65.69; //这里其实是将65分配到ch里
System.out.println(ch); // 打印结果为A(A的ASCII码十进制数就是65)
再如:int i=(int)'A';
System.out.println(i); //打印结果为65
如果转换结果适用于目标变量,就可以使用隐式转换方式,否则必须使用显示转换方式。
如:byte b='a'; int i='a'; //因为‘a’的统一码是97,它在一个字节范围内,所以可以用隐式转换方式
但\u1234超过一个字节范围内,需要强制赋值,所以要用显示转换方式
byte b=(byte)'\u1234';