今天跟李哥讨论强制转换 他问我 short i=1;i+=65535;System.out.println(i)打印的是多少?
我先用eclipse算出了65535的二进制:Integer.toBinaryString(65535);结果为
1111 1111 1111 1111 (这个是short的最大值了 16字位)
+ 0000 0000 0000 0001 (进行加法运算)
----------------------------------------------------
1 0000 0000 0000 0000
注意这里因为+=在编译时会自动进行强转动作,吧最后的结果转换成short类型的
而short只有16字位,所以这里在取运算结果时只保留后16位既
0000 0000 0000 0000
所以结果答案为 0;比较有意思跟大家也分享下!!嘿嘿。
|