下载此文档

Java方法的参数传递.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
Java方法的参数传递(二——非“不可变对象”的引用变量作为参数Java对于引用类型的参数传递,与8种基本数据类型的参数传递不同。对于基本数据类型的数据作为方法参数,是按值传递(passingbyvalue,即将实参变量所指向的栈内存临时存储区所存储数据(即实参变量的值进行复制,然后传递给形参变量首先,要弄明白两个不同的概念:对象,引用变量。对象是类的实例,存储位置位于“堆”(Heap中。引用变量是存放对应“对象”存储区之首地址的变量,存储位置位于“栈”中。因此,百味峰爷认为所谓以“对象”作为Java方法参数的说法不准确,更为准确的描述应该是“引用变量作为Java方法参数”。一、理论分析Java类中方法以“引用变量”作为形参,形参和实参在栈内存中都有各自独立的存储区。参数传递时,将“引用变量”实参的存储区中所存储数据(实参值进行复制,“复制值”存入“引用变量”形参的存储区。因为“实参值”是特定“对象”在堆内存中存储的首地址,所以参数传递操作使得形参和实参一样成为该“对象”的引用变量,即指向相同的堆内存区。二、:classDemo{inttemp;}lassParameterPassingDemo02{publicstaticvoidmain(String[]args{DemoactualParameter=newDemo(;=80;("fun(调用前实参actualParameter的值:"+;fun(actualParameter;//("fun(调用后实参actualParameter的值:"+;}publicstaticvoidfun(DemoformalParameter{//=888;}}运行结果为:三、分析从以上分析可以看出,实参actualParameter并未发生改变,改变的是其引用的对象newDemo(。实参actualParameter是“以不变应万变”,以自身的不变来应付所引用对象newDemo(的万变。四、对于“引用变量”作为方法参数,实参是否都能够“以不变应万变”?答案:否!接下来,百味峰爷试着做出如下的分析。编程过程中,有时候需要禁止某个“对象”被改动内容。为此,Java提供了Immutable类(譬如String类,该类的对象被称为“不可变对象”。根据定义,“不可变对象”是一种一旦构建好就不再变化的“对象”,在其生存期间不可被改变内容。对于这类对象,实参仍然不会发生变化,但是它所引用的对象也没有变化,因此谈不上“以不变应万变”,而是“不变”应“不变”。那么变化的是谁呢?百味峰爷计划在《Java方法的参数传递(三》再行总结。actualParameterTemp=0DemoactualParameter=newDemo(;actualParameterTemp==80;actualParameterformalParameterTemp=888

Java方法的参数传递 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人q1188830
  • 文件大小107 KB
  • 时间2019-11-20