javaint和integer,java中的integer什么意思

  javaint和integer,java中的integer什么意思

  一、java基本数据类型及其封装类

  如何解决写爬虫IP受阻的问题?立即使用。

  Java数据类型包括基本数据类型和引用数据类型。为了方便将基本数据类型作为对象对待,java引入了与基本数据类型相对应的封装类,比如int封装类是Integer。

  在线教学视频分享:java教学视频

  二、java自动拆箱和自动装箱

  1、自动装箱

  自动装箱实际上是将基本数据类型转换为引用数据类型(对象)。

  2、自动拆箱

  自动拆箱实际上是将引用的数据类型转换成基本数据类型。

  代码如下:

  公共静态void main(String[] args) {

  整数a=1;//这里用的是自动打包;相当于整数a=新整数(1);

  int b=a-1;//对象不能直接计算,下面是自动拆箱操作,把A对象转换成基本数据类型,然后-1

  system . out . println(a);

  system . out . println(b);

  }打印结果:

  一个

  0三、int和Interger的区别

  从上面我们可以看出int和Interger的区别:

  Int是基本数据类型,Integer是引用数据类型;

  int的默认值为0,Integer的默认值为null;

  int类型直接存储数值,Integer需要实例化一个对象并指向对象的地址。

  说到这,你以为就这样了?事实上,它们之间在细节上有一些不同:如下

  公共静态void main(String[] args) {

  整数a=新整数(1);

  整数b=新整数(1);

  int c=1;

  int d=1;

  整数e=1;

  整数f=1;

  整数g=130

  整数h=130

  整数i=新整数(130);

  int j=130

  } 1: A==B?废话,肯定不对等。这两个新对象的地址不同。

  2: C==D?这也是扯淡。所有基本数据类型的值必须相等。

  3:现在的关键问题是e==f吗?G==h?

  答案是:e==f;g!=h .

  为什么会这样?因为编译ava的时候,整数g=130会被编译成Integer.valueOf(130),反编译类文件就能看出来。通过整数源代码可以得出,Integer.valueOf()方法会缓存-128到127之间的整数,不会再续一个,所以e==f;当值二大于127或者小于-128时,就会更新,所以G!=h .

  Integer的valueOf方法如下:

  (int i)的公共静态整数值{

  //integer cache . low==-128;IntegerCache.high==127

  //当值大于-128小于127时,缓存;否则,开始一个新的。

  if(I=integer cache . low I=integer cache . high)

  return integer cache . cache[I(-integer cache . low)];

  返回新的整数(I);

  } 4:C==E,i==j吗?

  答案都一样。因为当封装的类与基本数据类型比较时,java会自动解包,然后比较值是否相等。

  总结:

  1.都是封装类,都是新的,肯定不相等。因为对象的内存地址是不同的。

  2.都是封装类,没有一个是新的。如果值介于-128和127之间,则等于,否则不等于。

  3.如果封装的类和基本类型比较,只要值相等就相等,否则不相等。因为当封装的类与基本数据类型进行比较时,会有一个自动的拆箱操作。

  4.都是基本数据类型。如果值相等,则相等;否则,它们是不平等的。

  更多相关教程,请访问:java入门。以上是java中int和integer区别的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: