Java-Short类型不溢出的问题

求教各位以下程序

 public static void main(String args[])
 {
 short ShortMax = Short.MAX_VALUE;
 short a =1;
 System.out.println("Maximum of Short Is = "+ ShortMax+a);
}

输出结果是327671

public static void main(String args[])
 {
 short ShortMax = Short.MAX_VALUE;
 short a =1;
 System.out.println(ShortMax+a);
}

输出结果是32768

想问下以上两例为什么不会出现溢出?

ShortMax+a
会自动转换成int
(short)(ShortMax+a)

short b = ShortMax+a 就会溢出了。在System.out.println里,ShortMax+a 的结果并没有被指定为short,它自动转换为了int(在idea里ShortMax+a自动就被识别为int了,赋值给short b直接就报错了。还发现,short a = 1;short b = 2; short c = a+b;也直接报错,错误是不能把int赋值给short... 两个short相加的结果默认就是int ? ... )