Integer 和int

时间:2023-03-08 19:49:25

获取Integer对象有两种方式:Integer x = 100;或者Integer x = new Integer(100);

Integer x = 100;等价于Integer x = Integer.valueof(100); 用valueof()函数返回一个Integer对象。

Integer是对象 int是数据类型,对象和数据类型比,比的是数值,会自动拆箱,所以不管是Integer x = 100;或者Integer x = new Integer(100);

和100相==,结果都为true;

而获取Integer对象的两种方式都是要新建Integer的对象,这样一来内存地址会不一样(不同对象的内存地址是不一样的),所以新建的两个Integer对象之间==,结果会为false;

但是有特例,valueof()函数的参数值如果在-128到127之间,会在赋值的时候缓存新建的对象(常量池),超过这个范围常量池存放不了,所以连续把valueof()参数在这个范围中间的返回值赋予两个Integer引用,会指向同一个对象,所以这个时候

Integer i1 = 100; Integer i2 = 100; i1==i2 为true;

但是String a ="sssssss"; String b = "sssssss" a==b为true,这是因为String引用指向一个新对象的时候,先看常量池里面有没有这个字符串,如果有,则直接指向。