您现在的位置:主页 > java教程 > >

java基本数据类型与包装类区别



时间: 2014-11-04 10:35     来源 : IT学习者      点击:

关键词: java    基本类型    包装类    Integer   


专题目录:java理解之道
 


Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

基本类型与包装类对应关系如下:
内容来自www.itxxz.com


关于包装类的简要区别我们大体都知道,但是也有一些让人疑惑。下面,我们系统来看:

1、本质


包装类创建的是对象,拥有方法和字段.对象的调用都是通过引用对象的地址 ;

基本类型则直接存数值.
copyright www.itxxz.com


2、存放空间

对于对象大家都知道,是存放于堆中,而基本类型则存放于栈中
相比而言,堆栈更高效,这也是java保留基本类型的原因。包装类创建的对象,可以使用api提供的一些有用的方法。

3、用途

对于包装类说,这些类的用途主要包含两种: 内容来自www.itxxz.com

 a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

内容来自www.itxxz.com

 b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

基本类型,则大多只用于代表某一参数值。

4、多态性


包装类是引用传递 
基本类型是值传递 


5、质疑

对于第四点,很多新手不是很明了。疑惑的一个原因我们就用如下代码来解答。 copyright www.itxxz.com

copyright www.itxxz.com

上面代码中,我们new了一个int的包装类Integer;又new了一个Student对象,有姓名和年龄两个属性。
当我们运行之后,打印值如下:




 
 问题就出来了,Student对象在打印时,姓名已经通过change方法改变,而Integer的值依然是1。
 如果Integer是引用类型,则应该打印100才对。

打开Integer的官方源码:



上图593行处,Integer的值是通过final修饰的,因此,一旦赋值后,便不可更改。这也就是很多新手起初在认为Integer是进行值传递时所忽略的一个地方。


IT学习者原创,转载请以超链接形式标明原文地址及作者






文章除注明转载外,均为IT学习者原创或编译
欢迎任何形式的转载,但务必请以超链接形式注明出处
本文出自:IT学习者
链接地址:http://www.itxxz.com



微信公众号:喝咖啡的螃蟹

喝咖啡的螃蟹
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
  • marry
    2014-11-06 10:30:21发表

    受教了

  • syf
    2014-11-05 09:47:11发表

    mark

  • javazzq
    2014-11-04 14:13:28发表

    nice

  • zuidaima
    2014-11-04 13:04:11发表

    mark

  • Chloe
    2014-11-04 10:50:45发表

    这些知识在网上可谓到处都是,就是楼主用心着而已

  • FEL
    2014-11-04 10:49:36发表

    正面试准备中,刚好用到,而且是最近的,哈哈,老子运气真好

  • cakty
    2014-11-04 10:48:01发表

    确实不错,图文结合,层次分明,分析也算到位

  • 圣罗兰
    2014-11-04 10:47:04发表

    。。。

  • miss.kr
    2014-11-04 10:46:52发表

    网上很多的,真够懒的

  • 圣罗兰
    2014-11-04 10:45:52发表

    螃蟹哥,啥时候出一篇介绍java中final的文章啊,挺喜欢这种风格的

-->