如何使用方法更改值?

时间:2014-08-05 07:49:26

标签: java methods void

class Trial {
static void main() {
    int i = 0;
    change(i);
    System.out.println(i);
}
static void change(int n) {
    n = n + 2;
    }
}

输出我得到 - 0 我想要的输出 - 2

请帮我改变我的代码。

1 个答案:

答案 0 :(得分:2)

Java中的所有内容都是按值传递的: http://www.javaranch.com/campfire/StoryPassBy.jsp

请改为尝试:

class Trial {
    static void main() {
        int i = 0;
        i = change(i);
        System.out.println(i);
    }
    static int change(int n) {
        return n + 2;
    }
}

修改

为方法的参数提供值的副本。该值可以是原始值(基元)或对象引用(对象)。

对于对象,引用的副本意味着您可以更改方法中对象的状态。您不能做的是更改已更改参数所指的状态。

示例1:

class Person {
    private String name;
    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public void setName(final String name) {
        this.name = name;
    }
}

Person p = new Person("James");
changeName(p);
System.out.println(p.getName()); // This will output Changed
...
public void changeName(Person person) {
    person.setName("Changed");
}

示例2:

Person p = new Person("James");
changeName(p);
System.out.println(p.getName()); // This will output James
...
public void changeName(Person person) {
    person = new Person(); // person is now referring to new object, not the one passed
    person.setName("Changed");
}