在方法调用

时间:2015-09-18 21:11:49

标签: java object

因此,当一个方法接受一个Object时,我知道Object的引用是传递的,而不是实际的Object本身。

因此,当我为方法内的Object赋值时,方法调用结束时,原始Object不变。

有没有办法在方法调用中更改实际的对象?

1 个答案:

答案 0 :(得分:0)

  

因此,当一个方法接受一个Object时,我知道Object的引用是传递的,而不是实际的Object本身。

这是不正确的。在Java中,一切都是通过价值传递的。但是,当传递对象时,值将保存实际对象的引用。

  

因此,当我为方法内的Object赋值时,方法调用结束时,原始Object不变。

这也是不正确的。将对象传递给方法并在方法中更改其值时,原始对象中的值将会更改。

class Student{
    int age;   //To keep it simple, data is not private

    public Students(int age){
        this.age=age;
    }   

    public static void main(String[] args) 
    {       
        Student s = new Student(17);
        addAge(s);
        System.out.println(s.age);      
    }
    public static void addAge(Students s){
        s.age += 5;
    }
}

<强>输出

22   //Age of original object does change
  

有没有办法在方法调用中更改实际的对象?

它将改变方法调用中的实际对象。如果您想知道我们如何不更改原始对象,那么我们将不得不传入原始对象的copy