【Java心得总结一】Java基本类型和包装类型解析
2015-05-19 19:34
218 查看
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型。
一、基本类型出现的原因
我们都知道在Java语言中,new一个对象存储在堆里,我们通过堆栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。(如下图所示为内存空间示意图)
![](http://img.blog.csdn.net/20150519192419064)
所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在堆栈中,因此更加高效。
Java共有9中基本类型,同别的语言有重要区别的是这9中类型所占存储空间大小与机器硬件架构无关,这使得Java程序有很强的可移植性,如下图:
![](http://img.blog.csdn.net/20150519192710466)
二、包装类型产生的原因
有了这9中基本类型,按理说应该够用了啊,但是Java还提供了相应的包装类型,如int对应Integer,char对应Character。为什么要有包装类型?
是因为Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与其他对象“接轨”就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
这里大家可能会担心一个问题,那岂不是我们在使用二者时要来回转换?这点Java的自动包装功能将会自动为我们完成,如下代码显示Character和char之
间的相互转换:
三、包装类型与基本类型异同
最后总结一下:
1.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
3.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
4.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到
转载自http://www.cnblogs.com/xltcjylove/p/3584386.html
一、基本类型出现的原因
我们都知道在Java语言中,new一个对象存储在堆里,我们通过堆栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。(如下图所示为内存空间示意图)
所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在堆栈中,因此更加高效。
Java共有9中基本类型,同别的语言有重要区别的是这9中类型所占存储空间大小与机器硬件架构无关,这使得Java程序有很强的可移植性,如下图:
二、包装类型产生的原因
有了这9中基本类型,按理说应该够用了啊,但是Java还提供了相应的包装类型,如int对应Integer,char对应Character。为什么要有包装类型?
是因为Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与其他对象“接轨”就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
这里大家可能会担心一个问题,那岂不是我们在使用二者时要来回转换?这点Java的自动包装功能将会自动为我们完成,如下代码显示Character和char之
间的相互转换:
[code]1 Character ch = new Character('x'); 2 char c = ch; 3 4 char c = 'c'; 5 Character ch = new Character(c);
三、包装类型与基本类型异同
最后总结一下:
1.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
3.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
4.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到
转载自http://www.cnblogs.com/xltcjylove/p/3584386.html
相关文章推荐
- 【Java心得总结一】Java基本类型和包装类型解析
- java基本数据类型对象包装类总结
- Java基本类型和包装类型总结
- Java基础学习总结(122)——Java八种基本数据类型的包装类及其装箱拆箱详解
- Java中包装类型和基本类型的使用场景(什么时候使用包装类型)(转)
- Java基本数据类型总结(转)
- java八大基本数据类型测试总结
- Java基本数据类型的包装类
- [置顶] JAVA源码分析---基本类型对应的包装类之基本框架
- JAVA总结(基本数据类型)
- Java中基本数据类型的包装类
- JAVA中基本类型的包装类
- Java中的单例、StringBuffer方法、基本数据类型的包装类以及权限修饰符(基础详解)
- Java中的StringButter、基本数据类型的包装类及权限修饰符
- Java中基本数据类型和包装类型有什么区别?
- Java学习总结--字符串String类和基本的数据类型有什么区别
- Java高级技术第三章——Java的基本类型的包装类
- java 基本数据类型的包装类
- Java 基本数据类型与其包装数据类型以及字符串(String)之间的转换问题
- Java基本包装类型