int与Integer区别及应用场景

一、int与Integer区别:

1、int属于基本数据类型,Integer属于int对应的包装类。

2、既然是类,就需要实例化才可以使用,而基本数据变量不需要。

3、Integer的默认值是null,而int的默认值是0

二、int与Integer的应用场景

1、为什么java会保留基本数据类型?
对于java来说,常说“一切皆对象”,那为啥java还有基本数据类型,对此需要明白,基本数据类型和对象类型的区别

1、基本数据类型
基本数据类型存在的是:值,基本数据类型在内存中存放的位置是栈。(声明在方法中的局部变量,基本类型作为成员变量,也存放在堆中)。

例如int a = 1 ;long a = 12L的形式定义的称为自动变量,自动变量存放的是字面值,没有类的存在。

2、对象类型
对象类型是对对象的引用,对象存放在堆中。

3、堆和栈的区别
那数据存放在堆中和栈中有什么区别呢?

栈:

1)栈的存取速度比堆快,仅次于直接位于CPU的寄存器。

2)栈中的数据的大小和生存周期是确定的。

3)栈中的数据可以共享。

堆:

1)堆可以动态的分配内存大小,生存期也不必告诉编译器。

2)堆在运行时动态分配内存,存取速度慢。

综上所述,可以简单的理解为,为了高效,可以把一些数值小,简单的变量存放在栈中。

2、有了基本数据类型为什么会出现Integer/包装类?
将基本数据类型封装成对象的好处是:

1、在对象中可以定义更多的功能方法操作该数据。例如:基本数据类型和字符串直接的转换。

2、编码过程中只接收对象的情况,例如List中只存入对象,不能存入基本数据类型;泛型不支持基本数据类型。

3、使用场景

大部分的情况下,这两种类型没有太大得区别。根据以上两点的分析,基本类型的存取速度会更快,对象中有更多功能方法来操作数据,要根据实际需要定义属性。

借鉴网上学生成绩的例子,没来考试,成绩是0还是null,如果你觉得是0就用int,如果你认为是null,就用Integer。

为什么在项目里面用Integer?

1,因为Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

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

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

11-05 184
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值