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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐西宏 黑马帝   /  2011-9-25 22:49  /  2116 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

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

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-9-25 23:15:31
沙发
java中任何类型的数据当作为参数传递给一个方法时都是按值传递的
基本数据类型传的是原始值的副本
引用数据类型传的是引用值得副本
所以在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
回复 使用道具 举报
黑马网友  发表于 2011-9-25 23:21:55
藤椅
这属于对象的引用传递,比如
class Student {
     private  String name;
     private   int age;
      public Student(){
       this.name="zhangsan";
       this.age=15;
      }
  }
public class TestStudent{
  public static void main(String [] args){
       Student stu=new Student();
        change(stu);
  public static void change(Student st){
     st.name="lisi";
     st.age=40;
}
}
}上面是俩个类,student \testStudent 当你在TestStudent类中new出Sutdent类的实例对象的时候,你的stu变量就会在栈内存中产生,同时在堆内存中会产生相应的属性变量空间以及值,当你把stu当做参数传递给change函数时,就等于把stu在栈内存中存储的与其相对应在堆内存中的属性空间的地址传给了st变量,所以此时的st变量也指向了stu所指向的属性值,所以stu的属性值会改变
回复 使用道具 举报
黑马网友  发表于 2011-9-26 00:44:48
板凳
引用传递吧
回复 使用道具 举报
黑马网友  发表于 2011-9-26 07:58:36
报纸
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
回复 使用道具 举报
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马