A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 贾波 中级黑马   /  2013-11-29 22:57  /  1241 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可以返回变化后的结果,那么这里到底是值传递还是引用传递?

评分

参与人数 1黑马币 +6 收起 理由
狼王 + 6 赞一个!

查看全部评分

1 个回复

倒序浏览
值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
代码说明:
  1. //Test.java
  2. class Test {
  3. private String name;

  4. public String getName() {
  5. return name;
  6. }
复制代码

测试类:
  1. //TestTransferParameter.java

  2. public class TestTransferParameter{
  3. public static void main(String[] args) {
  4. Test a = new Test();
  5. a.setName("a");
  6. Test b = new Test();
  7. b.setName("b");
  8. System.out.println("before swap: " + "a=" + a.getName() + "; b=" + b.getName());
  9. swap(a,b);
  10. System.out.println("after swap: " + "a=" + a.getName() + "; b=" + b.getName());
  11. }

  12. private static void swap(Test a, Test b) {
  13. Test temp;
  14. temp = a;
  15. a = b;
  16. b = temp;
  17. System.out.println("swaping: " + "a=" + a.getName() + "; b=" + b.getName());
  18. }
  19. }
复制代码

输出结果:
before swap: a=a; b=b
swaping: a=b; b=a
after swap: a=a; b=b

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 继续努力哈,辛苦了,。。。。.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马