为什么新的Formatter().format("%h",false)获得4D5?

hak*_*ami 0 java boolean

根据输出,java boolean false等于10011010101和true等于4CF , 10011001111. 我不明白为什么java将这些值用于布尔值.究竟是什么布尔存储?

Mar*_*nik 8

%h格式说明符的文档:

如果参数arg是null,那么结果是"null".否则,通过调用获得结果Integer.toHexString(arg.hashCode()).

我认为这说明了一切.false被装箱Boolean.FALSE,并且该对象碰巧有一个哈希码.

  • 而'true`的`hashCode`是`1231`; `false`是'1237`.请参阅http://stackoverflow.com/questions/3912303/boolean-hashcode (2认同)