怎么做单位网站,视频拍摄方法有哪些,网站建设北京贵,网站开发的软件支持Java面试题15牛客 以下关于Integer与int的区别错误的是
A int是java提供的8种原始数据类型之一
B Integer是java为int提供的封装类
C int的默认值为0
D Integer的默认值为1
懵逼树上懵逼果#xff0c;懵逼树下你和我#xff0c;这题难度一般#xff0c;很显然#xff…Java面试题15牛客 以下关于Integer与int的区别错误的是
A int是java提供的8种原始数据类型之一
B Integer是java为int提供的封装类
C int的默认值为0
D Integer的默认值为1
懵逼树上懵逼果懵逼树下你和我这题难度一般很显然答案为D
Java是面向对象的编程语言一切都是对象但是为了编程的方便还是引入了基本数据类型为了能够将这些基本数据类型当成对象操作Java为每一个基本数据类型都引入了对应的包装类型wrapper classint的包装类就是Integer从Java 5开始引入了自动装箱/拆箱机制使得二者可以相互转换对应如下
原始类型booleancharbyteshortintlongfloatdouble
包装类型BooleanCharacterByteShortIntegerLongFloatDouble
顺便一提Java中的基本数据类型只有以上8个除了基本类型primitive type剩下的都是引用类型reference type。
所以最基本的一点区别是Ingeter是int的包装类int的初值为0Ingeter的初值为null。除此之外还有区别请看代码:
public class TestInteger { public static void main(String[] args) { int i 128; Integer i2 128; Integer i3 new Integer(128); System.out.println(i i2); //Integer会自动拆箱为int所以为true System.out.println(i i3); //true理由同上 Integer i4 127;//编译时被翻译成Integer i4 Integer.valueOf(127); Integer i5 127; System.out.println(i4 i5);//true Integer i6 128; Integer i7 128; System.out.println(i6 i7);//false Integer i8 new Integer(127); System.out.println(i5 i8); //false Integer i9 new Integer(128); Integer i10 new Integer(123); System.out.println(i9 i10); //false } } 为什么i4和i5比是true而i6和i7比是false呢关键就是看valueOf()函数了这个函数对于-128到127之间的数会进行缓存 Integer i5 127时会将127进行缓存下次再写Integer i6 127时就会直接从缓存中取就不会new了。所以i4和i5比是true而i6和i7比是false。
而对于后边的i5和i8以及i9和i10因为对象不一样所以为false。
以上的情况总结如下
1无论如何Integer与new Integer不会相等。不会经历拆箱过程new出来的对象存放在堆而非new的Integer常量则在常量池在方法区他们的内存地址不一样所以为false。
2两个都是非new出来的Integer如果数在-128到127之间则是true,否则为false。因为java在编译Integer i2 128的时候,被翻译成Integer i2 Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。
3两个都是new出来的,都为false。还是内存地址不一样。
4int和Integer(无论new否)比都为true因为会把Integer自动拆箱为int再去比。
我是歌谣如果有什么不合理之处欢迎指出闲下来不如刷刷题。
阅读目录置顶)(长期更新计算机领域知识
阅读目录置顶)(长期更新计算机领域知识
阅读目录置顶)(长期科技领域知识
歌谣带你看java面试题