Java中数字的几个好玩的地方

开始 我们先从一个简单的例子开始: 你们可以大胆的猜测下结果。 相信很多人直接就已经没有了往下看得欲望。因为这道题目很简单,特别是还做了对比的输出。其中的道理也很简单,越界了。因为在给result赋值之前,后面执行的过程都是基于int的计算。所以最后的结果就是: 好了,简单的问题结束了。开始更加有趣的事情了。 传说中的Integer常量池 说到常量池,String的常量池应该是大家都比较熟悉的。毕竟作为公司的面试题目,大家都不会陌生。相信网上说到这个的也不会少,现在我们说的就是Integer的常量池。 也是先从代码开始。先看如下代码: 你们也可以猜猜这个的结果 其实也很好玩,想想看拆包和装包。就知道了。不过这边还是有几个好玩的地方,因为他的答案可能会超出你得理解。 举个例子,所谓的拆包装包只会在进行运算的地方进行。也就是说,在进行==操作的时候,并不是两个int在进行比较,而是两个Integer对象在进行比较。然后就可以按照String的理解进行答题了。 答案就是: 这么说,可能理解起来还是有点困难,但是,如果看到源代码,就能很好的理解了。下面是Integer的valueof()方法,因为在进行使用int值初始化的时候,将会使用到这个函数。 这边有一点说明: IntegerCache.high是127,IntegerCache.low是-128 然后,上面的几个例子就比较简单了,在进行Integer e = 128;的时候,其实是执行的Integer e…