6、看下面代码,输出结果是什么?为什么
publicvoidmethod1(){Integer i =newInteger(1);Integer j =newInteger(1);System.out.println(i == j);//false//因为i,j是两个不同的对象,i==j表示判断两者是否是同一对象,所以是falseInteger m =1;//底层使用Integer.vlaueOf(1)Integer n =1;//底层使用Integer.vlaueOf(1)System.out.println(m == n);//true 下面放源码//public static Integer valueOf(int i) {//if (i >= Integer.IntegerCache.low && i <= Integer.IntegerCache.high)// return Integer.IntegerCache.cache[i + (-Integer.IntegerCache.low)];//return new Integer(i);//其中//static final int low = -128;//而high的初始值为127,所以在(-128,127)范围内,不用创建新的Integer对象,因此m==n}Integer x =128;Integer y =128;System.out.println(x == y);//false//因为128不在(-128,127)范围内,所以x,y都是new出来的Integer对象Integer k =128;int l =128System.out.println(k == l);//true//只要有基本数据类型,那么==判断的就是值是否相等}