黑马程序员技术交流社区

标题: 参数传递 [打印本页]

作者: 余雷    时间: 2013-5-4 11:16
标题: 参数传递
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

作者: lpflpy    时间: 2013-5-4 12:12
java中参数的传递分为值传递和引用传递:
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。
public class  ValueDemo
{
    static void swap(int a, int b)//交换两个数的值
        {
        int temp=a;      
        a = b;
        b = temp;
    }
    public static void main(String[] args)
        {
       int x = 20,y=30;
      
        sop("值传递前: " + "x=" + x + "\t" + "y = " + y);
        swap(x,y);                                                                  
        sop("值传递后: " + "x=" + x + "\t" + "y = " + y);
    }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}
引用传递:如果在方法中把对象作为参数,方法调用时,参数传递的是对象的引用(地址),即在方法调用时,实际参数把对对象的引用(地址)传递给形式参数。这是实际参数与形式参数指向同一个地址,即同一个对象,方法执行时,对形式参数的改变实际上就是对实际参数的改变,这个结果在调用结束后被保留了下来。
作者: 孤独的鸟人    时间: 2013-5-4 13:06
是值传递
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
作者: 何羡玉    时间: 2013-5-4 15:29
是引用传递。在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
作者: kaka小明    时间: 2013-5-4 18:10
是引用传递,把对象的地址传进去了,当入参为对象引用时,均为引用传递,可对其进行更改,而当入参是基本数据类型时,为值传递,传递的是数据的拷贝(形参),方法的任何操作不影响实际参数。
作者: 黄玉昆    时间: 2013-5-4 22:47
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




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