128陷阱指的是,两个Integer数据类型(包装类)在一定范围内用 == 判断,会返回true。这个范围默认就是-128--127
之所以范围是-128--127,我们用int类型赋值给Integer时会自动调用Integer.valueOf()这个方法来赋值给Integer对象,是因为方法的源码中设置了一个Cache数组。
若在这个范围内Integer 变量指向的是这个数组里的一个元素。所以当用==判断的时候返回结果为true。
源码
cache数组的源码
128陷阱指的是,两个Integer数据类型(包装类)在一定范围内用 == 判断,会返回true。这个范围默认就是-128--127
之所以范围是-128--127,我们用int类型赋值给Integer时会自动调用Integer.valueOf()这个方法来赋值给Integer对象,是因为方法的源码中设置了一个Cache数组。
若在这个范围内Integer 变量指向的是这个数组里的一个元素。所以当用==判断的时候返回结果为true。