java基本类型和封装类型以及拆箱和封箱

java的基本类型和封装类型以及java的拆箱和装箱

java的基本类型及其封装类型
基本类型 boolean、char、byte、short 、int、long、float、double
封装类型 Boolean、Character、Byte、Short、Integer、Long、Float、Double

区别
1、基本类型只能按值传递,而每个基本类型对应的封装类是按引用传递的。
2、从性能上说,基本类型的运行速度高于引用类型的运行速度。因为java中的基本类型是在栈上创建的,而所有的对象类型都是在堆上创建的,(对象的引用在栈上创建)。
比如 Integer i=new Integer(10); 其中new Integer()是在堆上创建的,而他的引用Integer i是在堆栈上。
在栈上分配内存的调用效率远高于在堆上分配内存的效率。虽然在栈上分配内存效率高,不过在栈上分配内存有内存泄露的风险。
3、封装类的出现,是为了更方便的使用一些基本类型不具备的方法,比如valueOf(),toString()等等。还有你如果想传递一个int对象的引用,而不是值,那只能用封装类。
栈的内存使用效率远远大于堆的使用效率。
int和Integer的区别
1、Integer是int的包装类,int是一种基本的数据类型,int是JAVA缺省的8中基本数据类型之一.不是类的对象.

2、Integer变量必须实例化后才能使用,而int变量不需要

3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值

4、Integer的默认值是null,int的默认值是0,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。

返回数据库字段值是null的话,实体类中用int类型接收的话会报错。int是基本数据类型,其声明的是变量,而null则是对象。所以建议用integer

Integer和int变量进行比较时所需要注意的地方
1.、int 和Integer在进行比较的时候,Integer会进行拆箱,转为int值与int进行比较。

2.、Integer与Integer比较的时候,由于直接赋值的时候会进行自动的装箱,那么这里就需要注意两个问题,一个是-128<= x<=127的整数,将会直接缓存在IntegerCache中,那么当赋值在这个区间的时候,不会创建新的Integer对象,而是从缓存中获取已经创建好的Integer对象。二:当大于这个范围的时候,直接new Integer来创建Integer对象。

3.、new Integer(1) 和Integer a = 1不同,前者会创建对象,存储在堆中,而后者因为在-128到127的范围内,不会创建新的对象,而是从IntegerCache中获取的。那么Integer a = 128, 大于该范围的话才会直接通过new Integer(128)创建对象,进行装箱。

最后加一个比较详细的讲解java装箱和拆箱的链接。
深入剖析Java中的装箱和拆箱

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值