JAVA Puzzlers 05问题如下:public class JoyOfHex{      
          public static void main(String[] args){
              System.out.println(
                        Long.toHexString(0x100000000L+0xcafebabe));
           }
}这个程序会打印什么了?

解决方案 »

  1.   

    打印:cafebabe
    但不是很明白什么意思?
      

  2.   

    long和int加运算后结果仍然是int
      

  3.   

     以十六进制无符号整数形式返回 long 参数的字符串表示形式。
      

  4.   

    应该是这样的
    long与int相加,会把int转成long
    0xcafebabe因为对于32位的int来说首位是1,所以为保正0进制值不变,转换时前32位全部补1,就变成了0xffffffffcafebabeL
    那么结果就是0x0000000100000000L+0xffffffffcafebabeL,结果就是0x100000000cafebabe,首位溢出去掉,就是0xcafebabe了