经典Java面试题:Integer与int的区别?

时间:2026-02-19 21:56:03

1、Integer是int的包装类, int是基本数据类
最主要的区别就是这句 一个是基本数据类型, 一个是类但其实其中隐含的细节很多,比如Integer的默认初始值是null,而int的默认初试值是0。
Integer变量必须先实例,int变量则可以直接使因为Integer是包装的类, 所以自带很多方法可以使用, (方法表附在最后)
而int是基本数据类型只能做一些基本的+-*/=等操作 ,当二者交叉就会出现很多问题。

2、在Integer类中,“==”用来比较对象地址是否相同,并且Integer类重写了equals(Object obj)方法,在equals(Object obj)方法中,会先判断参数中的对象obj是否是Integer类型的对象,如果是则判断值是否相同,值相同则返回true,值不同则返回false,如果obj不是Integer类的对象,则返回false。需要注意的是:当参数是基本类型int时,编译器会给int自动装箱成Integer类,然后再进行比较。

3、在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

4、在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。


5、另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

6、Integer i=new Integer(10); 其中new Integer()是在堆上创建的,而他的引用Integer i是在堆栈上。 封装类的出现,是为了更方便的使用一些基本类型不具备的方法,比如valueOf(),toString()等等。还有你如果想传递一个int对象的引用,而不是值,那只能用封装类。


在堆栈上分配内存的调用效率和在堆上分配内存的效率差太多了。虽然在堆栈上分配内存效率高,不过在堆栈上分配内存有内存。

© 2026 一点资料
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com