Integer对象的创建方式以及区别
1.Integer num=130;
2.Integer num =newInteger(12);
3.Integer num = Integer.valueOf(12);
public static void main(String[] args){
Integer num1 = 10;
Integer num2 = 10;
System.out.println("num1 == num2 ? " + (num1 == num2));
Integer num3 = 128; Integer num4 = 128;
System.out.println("num3 == num4 ? " + (num3 == num4));
}
运行后,我们会发现赋值为10的时候,打印出来的是true,赋值为128的时候打印出来的是false,这是为什么呢?因为Java底层源码的问题 不做深究 。
容易理解的原因:
通过自动装箱方式生成Integer对象的时候,赋值在-128 ~ +127之间的时候,生成的多个对象都是同一个,这就是所谓的“享元模式”。而赋值超出这个范围的时候,会通过new Integer()来生成对象,故而生成的多个Integer对象不是同一个。
通过new Integer方式来生成Integer对象,不管传的值是多少,都会创建新的,所以通过new Integer()方式生成的Integer对象始终不是同一个。
通过Integer.valueOf()来生成的对象,在-128 ~ +127这个范围内,生成的是同一个对象,否则生成的对象不一样