用空间转换思考,short k = (short)5;//(栈)内存中开辟一个空间是装short型的变量k,把short类型的值5存放进k里,这一系列的操作JVM(JAVA虚拟机)很明白你是要把short类型的值5 存放进short类型的空间里;
short i = 0 ; short j = i +(short)5 //(栈)内存中开辟两个空间,一个是装short类型的变量i,把0放进i里,JVM知道0在short类型取值范围(-128~127)里,所以会把0当作short类型值来存放;一个是装short类型的变量j,而j的右边是要进行运算的,所以你可以理解为把右边的变量l的两个值都取出来放到另一个临时的空间进行运算,他们运算完之后的结果是5,而5被jvm默认为int类型的值,所以你必须要对这个值进行强制转换,其写法就为short j =short(i+k); |