int 和 Interger 比较的区别和注意事项

int 和 Interger 比较的区别和注意事项int 和 Interger 的区别首先要知道 int 是八大基本类型之一 其余七种 byte char short int long float double boolean 而 Interger 是类 In

大家好,欢迎来到IT知识分享网。

int 和 Interger 的区别

  • Integer是int的包装类,int则是java的一种基本数据类型
  • Integer 是类,默认值为null,int是基本数据类型,默认值为0
  • Integer 实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
  • Integer变量必须先实例,int变量则可以直接使用

int 和 Interger 的比较

1.Integer变量是对一个Integer对象的引用,即得到起所属地址值,在两个通过new生成的Integer变量永远是不相等的,因为new生成的是两个对象,其内存地址不同。

Integer a= new Integer(110); Integer b= new Integer(110); //结果为false System.out.print(a == b); 

所谓拆箱,就是进行与自动装箱相反的操作。

自动装箱的过程:当需要一种类型的对象时,这种基本数据类型就自动封装到与它对应的包装类中。

//装箱是将一个原始数据类型赋值给相应封装类的变量。而拆箱则是将一个封装类的变量赋值给相应原始数据类型的变量。 int i1 = 1; int i2 = 1; Integer integer1 = new Integer(1); Integer integer2 = new Integer(1); //两个变量值相等 System.out.println("1:"+(i1 == i2));// true  // integer1拆箱  System.out.println("2:"+(i1 == integer1));// true  // i装箱  System.out.println("3:"+integer1.equals(i1));// true  // 两个对象地址不一样  System.out.println("4:"+(integer1 == integer2));// false  // 两个对象值一样  System.out.println("5:"+integer1.equals(integer2));// true  /* 自动装箱规范要求-128=<boolean、byte、char <= 127, 介于-128~127之间的short和int被包装到固定对象中, 也就是就说,这些范围内的相同值对应同一个对象 */ Integer integer3 = 10,integer4 = 10; System.out.println("6:"+(integer3 == integer4)); // true  Integer integer5 = -129,integer6 = -129; System.out.println("7:"+(integer5 == integer6)); // false  Integer integer7 = 128,integer8 = 128; System.out.println("8==地址比较:"+(integer7 == integer8)+"&8.equas值比较:"+integer7.equals(integer8)); //代码转载于:https://www.cnblogs.com/ckxlovejava/p/7890109.html 

3.包装类Integer和基本数据类型int比较,java会自动拆包装为int,然后进行比较,故变为两个int变量的比较

int a = 110Integer b = new Integer(110); //结果为true System.out.print(a == b); 

4.非new生成的Integer变量和new Integer()生成的变量比较,因为非new生成的Integer变量指向的是java堆中的常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,所以两者在内存中的地址不同

Integer a = 110; Integer b = new Integer(110); //结果为false System.out.print(a == b); 

5.两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false,原因和代码参考上述2.

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119827.html

(0)
上一篇 2025-11-02 19:26
下一篇 2025-11-02 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信