首页 > 编程知识 正文

java基本数据类型,java

时间:2023-05-06 21:26:13 阅读:146725 作者:4347

面试时我会问int和Integer的区别,现在详细谈谈吧

Integer是int的包装类,int是基本数据类型。 Integer变量必须实例化才能使用; 不需要int变量。 Integer实际上是对对象的引用,而new的Integer实际上生成指向此对象的指针。 int直接存储数据值。 Integer的默认值为空; 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。 (变量值为-128~127时,new以外生成的Integer变量指向java常量池中的对象,new Integer ) )生成的变量指向堆中新创建的对象,两者都指向http://www

integerI=newinteger(100; 英特尔j=100; system.out.print(I==j ); //false 4,在比较除两个new之外生成的Integer对象时,如果这两个变量的值为内存中的地址不同,则比较结果为true,如果这两个变量的值不在此区间,则比较结果为false

Integer i=100; 英特尔j=100; system.out.print(I==j ); //true Integer i=128; 英特尔j=128; system.out.print(I==j );//关于//false第4条的理由:

如果正在编译Integer i=100,java将被翻译为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 ) ]; }返回新integer (I; }如果有收获的话! 希望老铁们来三联,赞扬、收藏、转发。

创作并不容易。 请不要忘记称赞。 鼓励很多人看这篇文章,顺便写更好的博客

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