为什么 toHexString 在看起来非常特殊的情况下打印不同的字符串?打印一个低于 0x80000000 的数字效果很好。将该值加 1 并打印它可以正常工作。但是直接分配该值不会打印相同的内容,相反我必须在末尾添加一个 L。
我的猜测是,它与默认情况下数字文字的类型为 int 的事实有关,但我不知道这发生在 0x80000000 而不是例如跨越 0xffffffff 时。
long a = 0x7FFFFFFF;
System.out.println(java.lang.Long.toHexString(a)); // prints 7fffffff
a++;
System.out.println(java.lang.Long.toHexString(a)); // prints 80000000
long b = 0x80000000;
System.out.println(java.lang.Long.toHexString(b)); // prints ffffffff80000000
b=0x80000000L;
system.out.println(java.lang.Long.toHexString(b)); // prints 80000000
PS 为什么oracle或tutorialspoint没有说明方法是如何实现的?在哪里可以找到标准库的实现?
喵喵时光机
相关分类