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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

wangzhaoxu

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© wangzhaoxu 初级黑马   /  2014-4-14 12:51  /  948 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当一个对象作为参数传递给函数的时候,是会新创建一个新的对象还是只是想对象的引用传递进去?

5 个回复

倒序浏览
貌似java中传递的都是引用,如果传递的是值,也就是一份拷贝,那么函数操作完了,对原数据没有产生效果,这个问题在C,C++和Python中我就研究过,java倒是没担心过这个问题,我觉得传的都是引用
回复 使用道具 举报
引用传递进去?
回复 使用道具 举报
曹冬明 发表于 2014-4-14 12:58
貌似java中传递的都是引用,如果传递的是值,也就是一份拷贝,那么函数操作完了,对原数据没有产生效果,这 ...

那么应该是操作的同一对象了,对吧
回复 使用道具 举报
参数是对象,传递过去的是引用(即地址),当这个对象里面的内容改变后,不影响这个对象的地址,即对象地址没有变.下面是演示
  1. public class Test
  2.         {  
  3.                 public static void main(String[] args)
  4.                         {  
  5.                                 Person p1=new Person("张三",29);  
  6.                         Person p2=new Person("李四",24);  
  7.                         System.out.println("交换前");  
  8.                         p1.display();  
  9.                         p2.display();  
  10.                         Person.swarp(p1, p2);
  11.                         System.out.println("交换后");  
  12.                         p1.display();  
  13.                         p2.display();
  14.                       }  
  15.         }  
  16.   
  17. class Person
  18. {  
  19.     private int age;  
  20.     private String name;      
  21.     public Person(String n,int d)
  22.             {  
  23.             this.name=n;  
  24.             this.age=d;  
  25.         }  
  26.     public static void  swarp(Person m1,Person m2)
  27.             {  
  28.                     Person temp=null;  
  29.             temp=m1;  
  30.             m1=m2;  
  31.             m2=temp;  
  32.         }  
  33.       
  34.     public void display(){  
  35.         System.out.println("name="+this.name+" age="+this.age);  
  36.     }  
  37. }  
复制代码

解释:
  java方法中传递参数时,无论是传递基本数据类型还是引用类型,都是传递参数(显示参数)的一个

拷贝,所以在调用方法结素之后,访问的仍是原来的值

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
wangzhaoxu 发表于 2014-4-14 13:07
那么应该是操作的同一对象了,对吧

对啊,如果你学过C或者C++就更容易理解了,那里面清楚的定义了指针和引用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马