float a = 1.5; //错误:1.5被默认为double型,double不能自动转换成float型,需要强制转换 float b = 1.5f; //编译通过 byte = 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
时间: 2024-10-11 18:13:39