{
/*
byte b1 = 3, b2 = 4, b;
b = b1 + b2; // 错误提示:Type mismatch: cannot convert from int to byte!原因:变量相加后会直接进行类型的提升
b = 3 + 4;
*/
float f1 = 3.1f, f2 = 3.2f, f;
f = f1 + f2;
System.out.println(f);
// f=3.1+3.2;//Type mismatch: cannot convert from double to float
}
我们先来看注释的第一段代码:它的class文件反编译(XJad)是:
public static void main(String args[])
{
byte b1 = 3;
byte b2 = 4;
byte b = 7;
System.out.println(b);
}
而b = b1 + b2;在变量相加后直接进行了类型提升,所以不能从int型转换为byte型。变量在运行时才能确定,而常量在编译时就能确定。
我们再来看未注释的第二段代码:它的class文件反编译(XJad)是:
public static void main(String args[])
{
float f1 = 3.1F;
float f2 = 3.2F;
float f = f1 + f2;
System.out.println(f);
}
再和 f = 3.1 + 3.2 相比,也就能明白为什么此句会提示不能从double转换为float!