常量池(2)


package constantPool;

public class Pools2 {

	public static void main(String[] args) {
		
		//1.常量式创建,对象将被放在栈内存(会被常量化,放进常量池),会进行自动"装箱";
		Integer i1 = 10;//装箱
		String s1 = "abc";
		
		//2.构造器创建(new创建)对对象将被放在堆内存(不会被常量化)
		Integer i2 = new Integer(10);//Integer i2 = Integer.valueOf(10);		
		String s2 = new String("abc");
		
		//3.基本类和包装类进行比较,包装类自动拆箱
		int i3 = 10;
		System.out.println(i1==i3&&i2==i3);
		
		//4.包装类之间比较(对象比较),则是比较地址,
		System.out.println(i1==i2);//一个在栈里面,一个在堆里面,自然不同
		
		//5.包装类进行运算操作会自动进行拆箱
		Integer i4 = new Integer(10);
		System.out.println(2*i3==(i2+i4)&&2*i3==(i1+i4));
	}
}

结果:
常量池(2)_第1张图片

补充:String类的两种:
常量池(2)_第2张图片

补充知识来源:Mooc第六章第四节讲的很详细

你可能感兴趣的:(java学习)