基本数据类型与封装数据类型的区别

1、首先介绍一下java中有了基本数据类型为什么还要有包装类型(封装类型)

Java中基本数据类型与包装类型有:

基本类型 包装器类型
boolean Boolean
char Character
int Integer
byte Byte
short Short
long Long
float Float
double Double

1、为什么存在这两种类型呢?

我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在栈中,因此更加高效。

2、有了基本类型为什么还要有包装类型呢?

我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

另外,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。

3、二者相互转换:

  1. int转Integer

    int i = 0;
    Integer ii = new Integer(i);

  2. Integer转int

    Integer ii = new Integer(0);
    int i = ii.intValue();

4、二者的区别:

  1. 声明方式不同:

基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;

  1. 存储方式及位置不同:

基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

  1. 初始值不同:

基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;

  1. 使用方式不同:

基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。

JAVA为什么要封装基本类型,比如int封装为Integer

为什么要有封装类型:
我们都知道,JAVA中Object这个类是所有类的超类,但实际上呢,八种基本类型并不属于Object。。。假如你思考过这个问题,那么就很明朗了:

public void test(Object obj){System.out.println(obj);
}{test(1);}

如上,定义的test函数需要一个Object类型的参数,可是1默认是int类型,它跟Object没半毛钱关系,凭什么test函数可以接纳一个int型的参数进去呢?
原因在于int有其对应的封装类型:Integer。
编译器会自动将1变成Integer,而Integer这个封装类型是Object的子类,所以可以向上转型被test函数获取。

可以说,假如没有这套封装类型,那基本类型传参将会是JAVA程序员的噩梦。
封装类型最大的意义正在于此。

项目中对封装类型最广泛的应用:实体类中所有属性均应采用封装类型。原因:基本类型没有null值,而数据库的表中普遍存在null值。

基本数据类型与封装数据类型的区别相关推荐

  1. 基本数据类型和封装类型的区别

    基本数据类型和封装类型的区别 基本数据类型 基本数据类型介绍 封装数据类型 基本数据类型对应的封装类介绍 基本数据类型与封装类对应关系对照表 String类 他们的区别 总结 基本数据类型 首先,我们 ...

  2. java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)

    Java基本数据类型与封装类型详解(int和Integer区别) 发布于 2020-4-19| 复制链接 摘记: int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Int ...

  3. java 封装表单数据类型_Java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...

  4. js基本数据类型和引用数据类型有什么区别?

    js基本数据类型和引用数据类型有什么区别? 1.基本数据类型和引用数据类型包括哪些? 基本数据类型: 在javascript中,有6种基本数据类型:string.number.boolean.null ...

  5. ElasticSearch 数据类型keyword和text的区别

    原文:https://blog.csdn.net/lionel_fengj/article/details/78367570 [ElasticSearch]数据类型keyword和text的区别 在 ...

  6. 保存数组类型数据_JS基本数据类型和引用数据类型的区别及深浅拷贝

    1.栈(stack)和堆(heap) stack为自动分配的内存空间,它由系统自动释放:而heap则是动态分配的内存,大小也不一定会自动释放 2.数据类型 JS分两种数据类型: 基本数据类型:Numb ...

  7. Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别

    ML岗位面试:10.11下午-上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点.python的可变不可变的数据类型.赋值浅拷贝深拷贝区别 Interview:算法岗位 ...

  8. js基本数据类型和复杂数据类型的区别

    js基本数据类型和复杂数据类型的区别为: let b = {age: 10 }let a = b; a.age = 20; console.log(a); //{ age: 20 } //基本数据类型 ...

  9. java中数组的返回值是什么类型_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...

    一.Arrays jdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作.例如快速输出.排序.查找等. 1.数组的常用方法 1.数组以字符串形式的输出,2.sort对数组排序 ...

最新文章

  1. ListView, GirldList 等setCurrentItem 不立即刷新
  2. 知识图谱在互联网金融中的应用
  3. faster rcnn源码解读(四)之数据类型imdb.py和pascal_voc.py(主要是imdb和roidb数据类型的解说)
  4. 解决deepin下挂载的的Windows系统(NTFC)目录是只读的问题
  5. 在哪个Linux发行版上运行python,怎么在linux上运行python
  6. NAS实现类型对比:统一式、网关式和横向扩展式(Scale-out)
  7. 用汇编的眼光看C++(之class构造、析构)
  8. iostat查看服务器io
  9. python爬取教务系统_python 爬取 强智科技教务系统(湖南)
  10. 高等数学 第七版 上册 下册 答案
  11. JAVA基础知识汇总(思维导图)
  12. selenium 模拟浏览器刷新
  13. 分形之皇冠(Crown)
  14. ios漂亮的启动动画
  15. 超3000个特效镜头,复联4是怎么在短时间里完成的?
  16. 【OpenGL ES】FBO离屏渲染
  17. 哈希表的查找比红黑树更快吗?
  18. Kernel启动流程源码解析 1 head.S
  19. vue Linter的各种坑
  20. 神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)

热门文章

  1. Mac系统home目录权限修改
  2. 【爬虫逆向案例】某道翻译js逆向—— sign解密
  3. GitHub开源:4行代码实现《黑客帝国》数字雨特效
  4. Ubuntu技巧:linux下以人易读形势查看文件大小
  5. rtorrent命令行使用
  6. 软件测试中期答辩,深度学习中期答辩ppt
  7. LBP算法提取图片纹理特征图
  8. golang安装步骤
  9. 双十一销量预测_2020年双十一销售额数据统计预测 双十一历年销售额盘点
  10. n个重复数字求和问题