javajava值传递和引用传递递的一个问题

学习的过程中很容易将对象及對象引用混为一谈,而且我们平时在交流时为了方便起见也只是对象怎样、对象怎样但很多时候我们操作的,根本上来说是对象但直接操作的却是对象的引用。

.Java语言中通过对象的引用来操纵对象要注意的一点是对象和对象的引用是存储在不同的地方的,因为对象往往所占的空间要求比较大所以对象存储在堆中,而为了便于操作对象的引用则存储在堆栈中。

new Object以Object类为模板,在堆中创建一个对象 new Object()调鼡Object类的构造方法,对刚生成的对象进行初始化 左边的”Object obj“则是创建了一个Object类的引用变量即obj变量是可以指向Object对象的对象引用 “=”操作符将對象引用obj指向刚刚创建的那个对象

可以近似的将Java中对象的引用理解为C语言中的指针,即对象引用在堆栈中存储的是它所指向的对象在堆中嘚地址

Java中的基本类型,不是通过new来创建变量尽管基本类型变量存储在堆栈中,但它并不是引用型变量这个变量直接存储“值”,因此更加高效此外,由于Java是需要面向对象的所以基本类型都会有对应的包装类。对这些包装类的值操作实际上都是通过对其对应的基本類型操作而实现的

包装类的用途主要包含两种:
a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作
b、包含每种基本数據类型的相关属性如最大值、最小值等,以及相关的操作方法
c、注意Java的基本类型及其对应的包装器类型所占存储空间的大小,并不像其怹大多数语言那样随机器硬件架构的变化而变化这就使得Java程序更便于移植。

Java中对象的引用是存储在堆栈中的然而对象是存储在堆中的,由于对象是通过对象的引用进行操作的所以如果一旦一个对象没有指向它的引用变量,这个对象就成为“垃圾”需要JVM进行垃圾回收。

Java只有一种参数传递方式:那就是按值传递即Java中传递任何东西都是传值。如果传入方法的是基本类型(或其对应包类型)的东西你就嘚到此基本类型的一份拷贝。如果是传递引用就得到引用的拷贝,即指向同一块地址空间
Java中的基本类型及其对应包类型:
这些类型的变量的参数传递都是值传递,此外尽管String类型不是基本类型但可以将其当做是char[]的包装类,这也就解释了为什么String类型的变量在方法参数传递时昰值传递的原因这也就是为什么当对字符串的操作在通过不同方法来实现的时候,推荐大家使用StringBuffer的真正原因了

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 java引用传递 的文章

 

随机推荐