java中有了基本类型为什么还要有包装类型?

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

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

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

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

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

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

二者相互转换:

1、int转Integer

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

2、Integer转int

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

二者的区别:

1. 声明方式不同:

基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
 
2. 存储方式及位置不同:

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

基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;
 
4. 使用方式不同:

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

原文地址:https://www.cnblogs.com/morganlin/p/12122762.html

时间: 2024-10-09 08:26:36

java中有了基本类型为什么还要有包装类型?的相关文章

实体类中用基本类型好,还是用包装类型好?

如果您也考虑这个问题欢迎指正我的观点,如果您正在考虑这个问题,欢迎评论一起讨论一下这个问题 刚才又想到了关于module或者实体类的建立的问题,用基本类型(int,long)好主要是,还是用包装类型(Integer,Long)好? 在过去很长时间我都自己冥想这个问题,也问过同事,都没有得到满意的答案,综合最近的学习,再考虑一下这个问题. 首先,分析各自的优缺点 基本类型(int,long) 优点 a.用于计算是效率高(effective java书上讲过的) b.不会由于常量池引起比较大小错误(

实体类中用基本类型好,还是用包装类型

关于module或者实体类的建立的问题,用基本类型(int,long)好主要是,还是用包装类型(Integer,Long)好? 在过去很长时间我都自己冥想这个问题,也问过同事,都没有得到满意的答案,综合最近的学习,再考虑一下这个问题. 首先,分析各自的优缺点 基本类型(int,long) 优点 a.用于计算是效率高(effective java书上讲过的) b.不会由于常量池引起比较大小错误(例如java integer对象判断两个数字是否相等) 缺点 1.当数据库中查询出结果之后封装结果集时如

Java连载76-基础数据类型包装类型及其方法简介

一.java中八种基本数据类型对应的包装类型 基本数据类型      包装类型 byte                    java.lang.Byte short                   java.lang.Short int                      java.lang.Integer long                    java.lang.Long float                    java.lang.Float double  

Java包装类型

********************包装类型*************************** 一.为什么有包装类型 java是面向对象的语言,但是正因为有了8种基本类型的存在,导致java不是完全面向对象的语言 为了让java语言 完全的面向对象,java设计人员, 封装每一种基本类型 设计 基本类型对应的 包装类型.. boolean char int long float doublebyte short Boolean Character Integer Long Float D

廖雪峰js教程笔记7 基本类型和包装类型

在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof undefined; // 'undefined' typeof Math.abs; // 'function' ty

JavaScript基础——引用类型(四)基本包装类型(Boolean、Number、String)、单体内置对象(Global、Math)

基本包装类型 为了便于操作基本类型值,ECMAScript还提供了3个特殊的引用类型:Boolean.Number和String.这些类型与其它引用类型相似,但同时也具有与各自的基本类型相应的特殊行为.实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据.如: var s1 = "some text"; var s2 = s1.substring(2); 这个例子中的变量s1包含一个字符串,字符串当然是基本类型值.而下

JavaScript--基本包装类型+Math对象

1. 基本包装类型 1)为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类Boolean, Number, String       每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而可以使我们调用一些方法操作这些数据.    var s = "briup";    s.substring(2);       后台会自动完成以下操作:    a.创建String类型的一个实例    b.在实例上调用指定的方法    c.销毁这个实例 2)基本包装

基本包装类型

ECMAScript5还提供了三个特殊的引用类型:Boolean Number String 这些类型与其他的引用类型相似,但是也具有各自的基本类型的特殊行为.每当读取一个基本类型值的时候, 后台就会创建一个对应的基本包装类型的对象 1 var s1 = "some text"; 2 var s2 = s1.substring(2); s1包含一个字符串是一个基本类型值,所以不可能有方法,但是在后台经历了这样三个过程: (1)创建String类型的一个实例 (2)在实例上调用指定的方法

JS中基本包装类型说明需求文档

为了便于操作基本类型值,ES还提供了三种特殊的引用类型,即(基本包装类型):Number,String,Boolean.这三种类型与前面介绍的引用类型相似,但同时也拥有基本数据类型的一些特性. 平时经常看到人家代码里创建了一个字符串/数字类型,然后使用字符串/数字类型的一些方法,比如,split().substring()等等,搞得我们误以为基本包装类型拥有的方法.其实,我们这种理解是错误的.实际上,当我们操作基本包装类型数据时,在后台就会悄悄的创建一个对应的基本包装类型的对象.因为是对象呀,所