21年9月29日___包装类

引子:

有一段很有意思的代码:

public class Main
{
	public static void main(String[] args)
	{
		Integer i1=100;
		Integer j1=100;
		System.out.println(i1==j1);
        
		Integer i2=129;
		Integer j2=129;
		System.out.println(i2==j2);
        
        int i3=129;
        System.out.println(i3==j2);
	}
}

输出为:

true
false
true

明明两个都是表示相同的数,第一个两个相等,第二个两个不相等,第三个又是相等呢?

原来

  • 基本类型与包装类型是有区别的。在Java中,一切皆对象,但八大基本类型却不是对象。

  • Java引进了对应八大基本类型的包装类。

  • Java自动缓存出来了Integer类型从-128到127的对象,所以在写Integer i1=100;时,被虚拟机解释成Integer i1=Integer.valueOf(100);而把值为100的对象的地址赋值给i1;第二个也是一样,不过系统并没有值为128的对象,所以会分别给i2,j2新的地址;对第三个来说,因为i3不是一个对象,所以被解析为i3==j2.intValue();

posted @ 2021-09-29 08:00  zhuangzhongxu  阅读(34)  评论(0)    收藏  举报