byte b = 20; //20是为默认类型int类型。大类型赋小类型却不用转型。
float f = 3.25F; //3.25是为默认类型double类型。大类型赋小类型要转型。
//为什么第一个不需要转型?
//*************************************************
byte b1=20;
byte b2= 30;
byte b3= b+b1; //编译报错,因为b+b1的默认类型是int,所以需要强转;
float a = 30.0f;
float a1 = 40.0f;
float a2= a+a1; //这里为什么编译能通过,难道a+a2不是为默认类型double吗
?
你刚刚定义了一个byte 类型的20,为什么要转型?
3.25F,F只是标记前面的3.25是个float类型。难道你要这样定义吗float f =(double)3.25F ?这是个什么语法呢...
在刚刚定义数据类型的时候,不涉及转换,因为你定义的就是该类型。在之后的赋值或调用的时候才涉及类型转换。
比如:
byte a =20
short b=30
int c = a+b
在计算c = a+b 的时候才有类型转换,float同理
因为20还在byte的取值范围内,所以不需要强转,换成200就需要了