本帖最后由 月亮人生 于 2013-7-24 07:58 编辑
class Demo
{
public static void main(String[] args)
{
Integer a = new Integer(55);
Integer b = new Integer(55);
Integer c = 55;
Integer d = 55;
Integer e = 155;
Integer f = 155;
System.out.println(a==b);//false //这里比较的是两个对象的地址,new了两个对象,开辟了两个不同的空间,所以这两个空间的地址当然不一样了,
//只是这两个对象里边的值都指向的是常量池里边的 55.
System.out.println(c==d);//true //Integer类的内部, 有一个常量静态数组, 在Integer类被加载的时候, 预先创建了-128 ~ 127的Integer对象, 所以当声明的Integer类型变量的值在-128 ~ 127的范围内时, 不会新创建对象, 直接引用数组中创建好的,否则将会创建对象。所以c和d这两个都直接引用的是Integer内部的55.所以相等。e和f这两个的值都超出了范围 ,所以要重新建立对象,故,e和f不相等。
System.out.println(e==f);//false
}
} |