/** * short a = 1; a = a + 1;有什么错? short a= 1; a += 1;有什么错? */ public class test2 { public static void main(String[] args) { short a = 1; int b = 100; long c = 100L; a = a + 1;//a是short类型,1是int类型,a+1, short类型+int类型,Java会自动转化为高等级类型,所以a+1结果是int类型, // 然后把int类型的值赋给比它小的short类型,Java不会自动转化,所以报错,需要强转 a = (short) (a + 1);//正确 a += 1;// += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。 b = b + c;//与上同理,需要强转 b = (int) (b + c);//正确 //总结: Java类型转换,小类型可以自动转成大类型,大类型不能自动转为小类型,需要强转。 } }