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、二者相互转换:
int转Integer
int i = 0;
Integer ii = new Integer(i);Integer转int
Integer ii = new Integer(0);
int i = ii.intValue();
4、二者的区别:
- 声明方式不同:
基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
- 存储方式及位置不同:
基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
- 初始值不同:
基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;
- 使用方式不同:
基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。
Java中有了基本类型为什么还要有包装类型(封装类型)相关推荐
- 基本数据类型和封装类型的区别
基本数据类型和封装类型的区别 基本数据类型 基本数据类型介绍 封装数据类型 基本数据类型对应的封装类介绍 基本数据类型与封装类对应关系对照表 String类 他们的区别 总结 基本数据类型 首先,我们 ...
- Java中有几种类型的流?以及常见的实现类都有哪些?
首先应该从两个角度来看: 从输入输出方面来讲: Java中有输入流和输出流 从流的编码方式上来讲: Java中有字节流和字符流 下面主要讲解从编码方式来看java几种常见的类型的流. ...
- 请回答一下Java中有几种线程池及实现过程?
请回答一下Java中有几种线程池及实现过程? 1.newFixedThreadPool创建一个指定工作线程数量的线程池.每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将 ...
- java私有表示标识_java里面的标识符、关键字和类型
1. 注释 Java中有三种注释: (1) // -单行注释,注释从"//"开始,终止于行尾: (2) -多行注释,注释从""结束: (3) -是Java特 ...
- Java中有指针么?
指针的概念对于没有学过C语言的朋友是很陌生的.因为JAVA中没有学过指针.那么什么是指针呢? 指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(Pointed to)存在电脑存储 ...
- java什么是类型擦除_Java 泛型,你了解类型擦除吗?
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...
- java的强类型语言与JavaScript(js)的弱类型语言
强类型 java语言是一种强类型语言,强类型怎么理解? java语言存在编译阶段,假设有代码:int i; 那么在Java中有一个特点是:java程序编译阶段就已经确定了 i变量的数据类型,该i变量的 ...
- Java 中有 goto 吗?
goto 是 Java 中的关键字, 但还处于保留状态, 在实际的开发中并不能使用. 本文列举了 Java 中的关键字以及引入时间, 同时讨论了和 goto 效果类似的 break label 的语法 ...
- es java 删除索引_使用java中的elasticSearch 2.3.3按索引名称和类型删除索引
我在java中有一个项目,我使用弹性搜索2.3.3索引数据.索引有两种类型. 我的索引文档看起来像: { "took": 10,"timed_out": fal ...
最新文章
- 数据结构学不会?视频+项目+网站大全,还有独家学习方法
- 使用栈将递归函数转化为非递归函数_栈(Stack)及其应用-Python实现
- EventBus BackgroundPoster原理解析
- 冒险岛079服务端_linux版(ubuntu,CentOS)下载
- 好用的Android抓包神器 VNET
- FLUKE 754过程校准器带HART协议
- 全图各省市乡镇数据交流
- 佛系前端面试题记录--第六周
- IRQL深入解析--IRQL级别
- postman替换快捷键ctrl加什么_你会用 Ctrl + ~ 键吗?
- 计算机系统时间的修复,电脑时间总是不对,小编教你如何恢复正常
- 记录一个被自己蠢到的事——解决Potplay等播放器播放视频异常打不开故障
- 【论文解读】FA-GANs: 面部吸引力增强、面部美容、几何与外观双分支GAN一致性增强
- 用MATLAB画误差对比图
- PS通过模板批量替换数据转换为PDF
- 报名 | 2022年 Ansys 全球仿真大会中国站启动报名
- 嗷嗷加班,如何保持学习能力~
- ABBYYFineReader15免费电脑pdf文档文字识别软件
- Task 4: Contextual Word Embeddings (附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)
- MATLAB工具箱大全
热门文章
- python 通过邮件控制电脑 实现远程控制
- #Python3中判断是不是回文数
- Android自定义监听回调
- Python Max retries exceeded with url错误
- 照片视频字体音频配色简历ppt免费素材
- RTMPose关键点检测实战——笔记3
- PLSA的理解及推导
- Echarts:在series里配置如下itemStyle,即可实现值大于0时为红色,小于0时为绿色
- 介绍python库的书籍_《介》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- php获取当月工作日天数,2018年每月工作日天数多少天?2018年工作日总天数有多少天...