网站大量收购独家精品文档,联系QQ:2885784924

JAVA传值与传引用技巧.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例一: 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参?数的值。 引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。 下面举例说明: 传值---传递基本数据类型参数 public????class???????????PassValue{ ????static void exchange(int a, int b){//静态方法,交换a,b的值 ????????int temp; ????????temp = a; ????????a = b; ????????b = temp; ????} ????public static void main(String[] args){ ???????int i = 10; ?????? int j = 100; ???????System.out.println(before call: + i= + i + \t + j = + j);//调用前 ????????exchange(i, j);????????????????????????????????????????????????????????????????????//值传递,main方法只能调用静态方法 ????????System.out.println(after call: + i= + i + \t + j = + j);//调用后 ????} } 运行结果: ????????before call: i = 10????????j = 100 ????????after????call: i = 10????????j = 100 说明:调用exchange(i, j)时,实际参数i,j分别把值传递给相应的形式参数a,b,在执行方法exchange()时,形式参数a,b的值的改变不影响实际参数i和j的值,i和j的值在调用前后并没改变。 引用传递---对象作为参数 如果在方法中把对象(或数组)作为参数,方法调用时,参数传递的是对象的引用(地址),即在方法调用时,实际参数把对对象的引用(地址)传递给形式参数。这是实际参数与形式参数指向同一个地址,即同一个对象(数组),方法执行时,对形式参数的改变实际上就是对实际参数的改变,这个结果在调用结束后被保留了下来。 class Book{ ????String name; ????private folat price; ????Book(String n,????float ){????????????????//构造方法 ????????name = n; ????????price = p; ????} ????static??void? change(Book a_book,????String n,????float p){????//静态方法,对象作为参数 ????????????a_book.name = n; ????????????a_book.price = p; ????} ????public void output(){????????//实例方法,输出对象信息 ????????System.out.println(name: + name + \t + price: + price); ????} } ?public class PassAddr{ ????public static void main(String [] args){ ????????Book b = new Book(java2,????32.5f); ????????System.out.print(before call:\t);????????//调用前 ????????b.output(); ????????b.change(b,????c++,????45.5f);????????????//引用传递,传递对象b的引用,修改对象b的值 ????????System.out.print(after call:\t);????????????//调用后 ????????b.output(); ????} } 运行结果: ????????before????call:????name:java2????????price:32.5 ????????after???????call:????name:c++??????????price:45.5 说明:调用change(b,c++,45.5f)时,对象b作为实际参数,把引用传递给相应的形式参数a_bo

文档评论(0)

4753333 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档