亲宝软件园·资讯

展开

Integer和int的区别 Integer和int的区别实例详解

smart_1234 人气:0
想了解Integer和int的区别实例详解的相关内容吗,smart_1234在本文为您仔细讲解Integer和int的区别的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Integer和int的区别,Integer和int的差异,下面大家一起来学习吧。

Integer和int最本质的区别就是:Integer是封装类,int是基本数据类型(这是废话)。

本文是希望能对Integer和int的区别进行更详细的对比说明并加以举例

Integer和int的区别

关于Integer

在说明Integer的时候有几个小知识点提一下:

 public boolean equals(Object obj) {
    if (obj instanceof Integer) {
      return value == ((Integer)obj).intValue();
    }
    return false;
  }

几点说明

Integer a = new Integer(1);
int b = 1;
System.out.println(a == b);//true

两个通过new生成的Integer变量是永远不相等的(因为new生成的是两个新对象,内存地址不同)

Integer a = new Integer(1);
Integer b = new Integer(1);
System.out.println(a == b);//false

两个通过非new产生的Integer变量也是不相等的(因为非new产生的Integer变量指向Java常量池中的对象,而new产生的变量指向堆中新建对象,他俩所在的内存地址不同)

Integer a = new Integer(1);
Integer b = 1;
System.out.println(a == b);//false

两个非new产生的Integer变量比较:当值在-128~127之间时,结果为true,当值在此区间外结果为false(因为Integer常量池的存储范围是[-128,127],在此范围内是直接存储于常量池的,都指向同一个地址。在此范围外的数需要通过堆内存创建一个新对象。比如Integer a=1会将1写入缓存中,下次再写Integer b=1时会直接从缓存中去,不用new了,所以取到的地址也是相同的)

Integer a = 1;
Integer b = 1;
System.out.println(a == b);//true

Integer a = 129;
Integer b = 129;
System.out.println(a == b);//false

加载全部内容

相关教程
猜你喜欢
用户评论