JAVA类型转换的问题……。

     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就需要了