首页 > 代码库 > Integer比较
Integer比较
/** * @time 2014-06-25 * @author Cao HaiCheng * */ public class demo { public static void main(String[] args) { test1(); test2(); test3(); test4(); test5(); } /** * 第一个答案是false很好理解,因为'=='操作符比较的是两个对象的地址,a和b指向的地址不同 */ private static void test1() { Integer a = new Integer(50); Integer b = 50; System.out.println("test1运行结果:"+(a == b)); //false } /** * 这个答案是true,Integer a=50属于自动装箱,调用的是编译器中的public static Integer valueOf(int i)方法 * 我们看下这个方法: * public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } * * 我们可以看到jdk源码中定义的这个方法意思是这样的:当i的值在某个范围之间的时候不用创建对象,直接去IntegerCache中取,再看下这个 * IntegerCache类: * private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = http://www.mamicode.com/sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。