其实这个我也纠结了很久。
short是2个字节,16个二进制,int是4个字节,32个二进制。所以在定义short s=4;时,就有疑问了?4明明默认是int型的,怎么可以用short类型来定义呢?关键在于Java是强类型的语言,在定义的时候相当于是这样的(我的理解):short s=(short)4;就是说发生了自动的强制转换。
而s=s+5;这个会提示编译错,为什么?因为s是short型,5是int型,s+5:先把s自动的提升为int型,然后在和5相加,这样s+5的结果类型就是int,那么右边结果是int型,左边是short,你说int能赋值给short型吗,在这题是不可以的。除非以下情况可以:s=(short)(s+5);把s+5的结果强制转换成short,再赋值给右边,这样就对了。
这问题老师说没必要纠结它半个到一个小时,如果实在不懂,就去看【毕向东_Java基础视频教程第02天-11-赋值和比较运算符】,看到懂为止。不知道我的理解对不??
|
|