首页 > 编程知识 正文

interfere,int与long的区别

时间:2023-05-03 17:24:54 阅读:176172 作者:3502

int和Integer的区别1、Integer是int的包装器,int是java的基本数据类型

2、Integer变量必须实例化才能使用,但不需要int变量

3、Integer实际上是对对象的引用,在new的Integer的情况下,实际上生成了指向这个对象的指针; int直接存储数据值

4、Integer的默认值为null,int的默认值为0

扩展:关于Integer和int的比较

1 .由于Integer变量实际上是对一个Integer对象的引用,因此new生成的两个Integer变量始终不相等(因为new生成的是两个对象,并且内存地址不同)。

integerI=newinteger(100; integerj=newinteger(100; system.out.print(I==j ); //false 2、比较Integer变量和int变量时,如果两个变量的值对等,则结果为true。 (将包装类Integer与基本数据类型int进行比较时,java会自动解除包装并与int进行比较,因此实际上是两个int变量的比较。 ) ) ) ) )。

integerI=newinteger(100; int j=100; system.out.print(I==j ); 如果将//true 3,new以外生成的Integer变量与new Integer ()生成的变量进行比较,则结果为false。 (内存中的地址不同,因为非new生成的Integer变量指向java常量池中的对象,而new Integer ()生成的变量指向堆中新创建的对象。)

integerI=newinteger(100; Integer j=100; system.out.print(I==j ); //false比较在new以外生成的Integer对象时,如果两个变量的值在区间-128到127之间,则为true,如果两个变量的值不在该区间内,则为false

Integer i=100; Integer j=100; system.out.print(I==j ); //trueInteger i=128; Integer j=128; system.out.print(I==j ); //false 对于第4条的原因:

如果java正在编译Integer i=100,则会将其翻译为integerI=integer.valueof(100 )。 另一方面,java API将Integer类型的valueOf定义如下:

publicstaticintegervalueof (inti ) { assert IntegerCache.high=127; if (I=integer cache.lowi=integer cache.high (returnintegercache.cache [ I (-integer cache.low ) ] ); }返回新整数(I; } java对-128到127之间的数字进行缓存,如果Integer i=127,则缓存127;如果下次写入Integer j=127,则直接从缓存中提取,而不是new

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。