黑马程序员技术交流社区

标题: 这是值传递还是引用传递? [打印本页]

作者: 徐西宏    时间: 2011-9-25 22:49
标题: 这是值传递还是引用传递?
当一个对象作为参数传递给一个方法后,此方法可以给便这个对象的属性,并可以返回变化后的结果,那么这里到底是值的传递还是引用传递?为什么
作者: 匿名    时间: 2011-9-25 23:15
java中任何类型的数据当作为参数传递给一个方法时都是按值传递的
基本数据类型传的是原始值的副本
引用数据类型传的是引用值得副本
所以在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
作者: 匿名    时间: 2011-9-25 23:21
这属于对象的引用传递,比如
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
引用传递吧
作者: 匿名    时间: 2011-9-26 07:58
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
作者: 匿名    时间: 2011-9-26 10:43
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2