从main方法调用方法

时间:2015-12-25 18:53:58

标签: java methods static main

当我直接从main方法调用方法时,不允许这样做。但是,当我从类的构造函数调用相同的方法时,它是允许的。

允许的版本;

public class App {

Integer firstVariable;
Integer secondVariable;

public static void main(String[] args) {
    App obj = new App(3, 2);
}

public App(Integer firstVariable, Integer secondVariable) {
    this.firstVariable = firstVariable;
    this.secondVariable = secondVariable;

    this.calculate(firstVariable, secondVariable);
}

public int calculate(int a, int b) {
    int result = a + b;

    return result;
}
}

不允许的版本;

public class App {

Integer firstVariable;
Integer secondVariable;

public static void main(String[] args) {
    App obj = new App(3, 2);

    obj.calculate(firstVariable, secondVariable);
}

public App(Integer firstVariable, Integer secondVariable) {
    this.firstVariable = firstVariable;
    this.secondVariable = secondVariable;

}

public int calculate(int a, int b) {
    int result = a + b;
    return result;
}
}

我知道它是"无法对非静态字段进行静态引用firstVariable"错误。我的问题是;在两个代码块中,完成了同样的事情,但它们之间有什么区别?

1 个答案:

答案 0 :(得分:1)

问题不在于您的方法。问题是您的变量(您尝试传递的参数)是从静态上下文引用的。