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、使⽤场景
el表达式获取值⼤部分的情况下,这两种类型没有太⼤得区别。根据以上两点的分析,基本类型的存取速度会更快,对象中有更多功能⽅法来操作数据,要根据实际需要定义属性。
借鉴⽹上学⽣成绩的例⼦,没来考试,成绩是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中还定义了表⽰整数的最⼤值和最⼩值的常量。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论