你如何在java中访问对象的静态变量?

时间:2016-01-29 22:09:16

标签: java eclipse

我正在开发一个程序,我必须包含两个静态变量。在创建十个对象的数组之前,我将它们包含在我的构造函数中。后来,我尝试以下列方式实现其中一个静态变量:

if (finalScore >= students.get(0).minA){
            finalLetterGrade = "A";
            aCounter++;
//(student.get(0).minA = 90)

该程序应该可以正常工作,但是由于以下错误消息,Ecipse不允许我保存程序: “应该在一个。中访问静态字段ClassGrade.minA      静态方式“ 错误会在我提供的代码的第一行弹出。任何人都可以向我解释在java中访问一个对象的静态变量的正确方法,或者至少建议我如何通过这个错误消息并保存\运行我的程序?

3 个答案:

答案 0 :(得分:2)

您收到警告,因为静态方法应该通过其容器类本身(Classname.staticMethod())访问,而不是通过其中一个实例访问。变化

if (finalScore >= students.get(0).minA)

if (finalScore >= ClassGrade.minA)

答案 1 :(得分:1)

static 表示您对整个类只有一个变量/方法。您可以创建无限量的对象,但值不会发生变化。因此,您应该通过类而不是类的实例来访问它: ClassGrade.minA代替students.get(0).minA

答案 2 :(得分:1)

只是为了您的理解想解释静态变量可以/不能使用的上下文。

让我们说我们有一个课程演示。

public class Demo {

  int number;
  static int counter;

  public static void printCounter(){
    System.out.println(number); // Shows compilation error.
    System.out.println(counter);
  }

  public void printNumber(){
    System.out.println(number);
    System.out.println(counter);
  }
}

现在这个类有一个静态变量counter和成员变量number。同样,它有2个方法静态方法printCounter()和非静态方法printNumber()

现在让我们按照定义

成员变量:属于特定对象的变量

静态变量:属于特定类的变量。这意味着该类的每个对象都可以访问该变量。因此变量属于所有对象。

让我们先考虑printNumber()方法。您将通过像Demo demo = new Demo()这样的Demo类的对象调用此方法。此方法可以访问属于该对象的成员变量。它还可以访问静态变量,因为静态变量属于所有对象。因此,可以在成员函数内访问静态变量。

现在让我们考虑printCounter()方法。您将通过Demo.printCounter()之类的类访问此方法。现在假设我们之前创建了3个Demo对象,并且每个对象的number值都不同。因此,如果我尝试在printCounter()方法中访问number,它将访问哪个值?没有。因为有多个值。因此,无法从静态函数访问成员变量,它显示编译错误。