byte a = 3为什么能正常执行呢?

byte a = 3;

为什么能正常执行呢?3默认为int类型不是吗?int的值赋给byte

你试一下 300,   3000,  看看有什么结果。 

byte a = 300不能正常运行,我觉得可能和byte的范围有关系,但是

byte a = 3;
byte b = 4;
byte c;
c = a + b;

这里的byte c也是赋予了一个int类型,而且没有超过byte的范围,为什么又不能正常运行了呢

varDemo.java:9: 错误: 不兼容的类型: 从int转换到byte可能会有损失
                c = a + b;

 

因为 (a + b) 成为了一个 int

3赋给a,不是也是int赋给byte吗?