牛客题解

在牛客网上又做错了一道题,好亏,学会valueOf这个方法得原理还是挺重要的,题目如下:

牛客题解

Integer类的valueOf源码如下:

牛客题解


首先常量池这个概念,原来以为只要是一个整型,都会放进到常量池,比如,0,1,12222222等。查找后发现,Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127并且大于等于-128时才可使用常量池,因为他们至占用一个字节(-128~127);

再者Integer.valueOf方法中也有判断,如果传递的整型变量>= -128并且小于127时会返回IntegerCache类中一个静态数组中的某一个对象, 否则会返回一个新的Integer对象

牛客题解



当我把所有的数换成128,结果就会变得:

牛客题解