Java中类型转换相关

Java中类型转换相关

float a = 1.5;    //错误:1.5被默认为double型,double不能自动转换成float型,需要强制转换
float b = 1.5f;   //编译通过

byte c = 1;     //编译通过
/*
因为java中对于默认值为int型的数值,当赋值给当赋给一个比int型数值范围小的数值类型变量(在此统一称为数值类型k,k可以是byte/char/short类型),会进行判断,如果此int型数值超过数值类型k,那么会直接编译出错。因为你将一个超过了范围的数值赋给类型为k的变量,k装不下嘛,你有没有进行强制类型转换,当然报错了。但是如果此int型数值尚在数值类型k范围内,jvm会自定进行一次隐式类型转换,将此int型数值转换成类型k。
*/

 

byte m = 1, n = 2, c;

c = 1+2;  //编译通过
c = m+n; //错误。 因为m+n的值可能超过了byte的范围
c = m+2; //错误
c = (byte)(m+n); //编译通过。

  

参考资料:http://www.cnblogs.com/lwbqqyumidi/p/3700164.html