如何通过调用方法来分配类变量值?

时间:2015-06-05 14:45:45

标签: java

我试图通过方法为类变量赋值。但是,在执行超出方法范围后,变量仍然初始化为默认值。我们如何在Java中实现这一目标?

我想通过调用方法hello()将x初始化为5。我不想通过使用构造函数或使用它来初始化。有可能吗?

public class Test {
    int x;
    public void hello(){
        hello(5,x);
    }
    private void hello(int i, int x2) {
        x2 = i;
    }
    public static void main(String args[]){
        Test test = new Test();
        test.hello();
        System.out.println(test.x);
    }
}

3 个答案:

答案 0 :(得分:10)

当你这样做时

hello(5,x);

然后

private void hello(int i, int x2) {
    x2 = i;
}

似乎您可能尝试将字段本身作为参数传递给hello方法,而在执行x2 = i时,您需要x2来引用到字段。这是不可能的,因为Java仅支持按值传递。即无论何时将变量作为参数赋给方法,它所包含的值都将被传递,而不是变量本身。

(感谢@Tom在评论中指出对问题的这种解释。)

答案 1 :(得分:2)

只有在x中使用this.x才能看到类属性hello(),因为您已在方法的参数中声明了另一个名为x的变量。

删除该参数:

private void hello(int i) {
    x = 5;
}

重命名参数:

private void hello(int i, int y) {
    x = 5;
}

或使用this.x设置类属性:

private void hello(int i, int x) {
    this.x = 5;
}

答案 2 :(得分:0)

您可以创建两种方法。

public void setX(int a)//sets the value of x
{
    x=a;
}
public int getX()//return the value of x
{
return x;
}

调用setX设置x和getx的值以返回值x。

基本上这些被称为getter和setter,我们使用它们从类外部访问私有成员。