基本数据类型与包装类——Java

目录

一、为啥还要引入包装类?

二、基本数据类型和包装类的存储

三、什么时候用?


一、为啥还要引入包装类?

        1、一是Java是万物皆对象的,基本数据类型并不是对象;

        2、二是很多方法的入参都是Object类型,基本数据类型并不能满足;

        3、三是很多时候我们获取到对象后会去get它的值,如果是基本数据类型就容易出现NPE,也是就是空指针异常,如果是包装类就不会出现NPE,而是null;

        :可以想象一个场景,比如记录一场考试,假如有一个分数为0,那么他是没来考试呢,还是他考了0分了,就不好区分,需要额外的字段开销去维护。如果为包装类,那么为null的是没来考试的,为0的是考0分的,就比较好区分。

基本数据类型与包装类——Java_第1张图片

二、基本数据类型和包装类的存储

基本数据类型

        基本数据类型的值直接存储在变量的内存空间中,且有固定的大小和表示范围。在内存中分配存储空间,变量的生命周期随着作用域的结束而结束,也就是说基本数据类型用完就释放了。

包装类

        而包装类引用变量存储在栈中,其对象存储在中,他们的生命周期由程序控制,当没有引用指向的时候会被Java的垃圾回收机制自动回收。还有一点就是,Integer中-128到127是存储在常量池Integer Cache里面的,在我们int自动装箱的时候,如果值是这个范围里面的,会直接从常量池里去获取,而不是new一个。

如下图:

基本数据类型与包装类——Java_第2张图片

三、什么时候用?

这里简单的推荐一下,

基本数据类型        

我们在局部变量使用,通常在局部变量定义的我们也不会去get和set,就解决了可能出现的NPE,而且局部变量用完就释放也是非常契合。再就是在循环中,不需要考虑空,需要大量迭代中去使用,因为基本数据类型的效率相对于包装类高。

包装类

1、rpc方法中使用,即需要被远程调用的方法入参。

2、pojo类,像我们的数据库表映射成类,用包装类型就可以处理某些字段为空的情况,而且包装类也可以提供各种工具方法,比如数据格式化,拆分等等。

:可能很多人不太懂这个pojo类的意思,pojo类就是简单的对象,只用来装载数据,不涉及任何的业务操作,它没有实现接口也没有继承,它与Javabean有一个区别就是不用实现序列化接口和提供无参构造。

你可能感兴趣的:(Java基础,java,开发语言)