Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中访问对象的静态变量?_Java_Eclipse - Fatal编程技术网

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

如何在java中访问对象的静态变量?,java,eclipse,Java,Eclipse,我正在编写一个程序,其中必须包含两个静态变量。在创建一个包含10个对象的数组之前,我将它们包含在构造函数中。后来,我尝试通过以下方式实现其中一个静态变量: if (finalScore >= students.get(0).minA){ finalLetterGrade = "A"; aCounter++; //(student.get(0).minA = 90) 该程序本应工作正常,但由于以下错误消息,Ecipse不允许我保存该程序: “

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

if (finalScore >= students.get(0).minA){
            finalLetterGrade = "A";
            aCounter++;
//(student.get(0).minA = 90)
该程序本应工作正常,但由于以下错误消息,Ecipse不允许我保存该程序: “静态字段ClassGrade.minA应在 “静态方式” 错误会在我提供的代码的第一行弹出。有人能给我解释一下在java中访问对象静态变量的正确方法吗,或者至少能告诉我如何通过此错误消息保存\运行我的程序吗?

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

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

您会收到警告,因为应该通过容器类本身(
Classname.staticMethod()
)而不是通过其实例访问static方法。改变

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


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

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

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

假设我们有一个课堂演示

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);
  }
}
现在这个类有一个静态变量
计数器
和成员变量
编号
。类似地,它有两种方法:静态方法
printCounter()
和非静态方法
printNumber()

现在让我们来看看定义

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

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

<>先考虑<代码> PrimeNoUnter()方法。您将通过Demo类的对象调用此方法,如
Demo=newdemo()
。此方法可以访问属于该对象的成员变量。它还可以访问静态变量,因为静态变量属于所有对象。因此,可以在成员函数内访问静态变量


现在让我们考虑<代码> PrimTror()/<代码>方法。您将通过类

Demo.printCounter()
访问此方法。现在想象一下,我们之前创建了3个演示对象,每个对象的
number
值不同。所以,如果我尝试在printCounter()方法中访问
number
,它将访问哪个值?没有一个因为有多个值。因此,无法从静态函数访问成员变量,这表明存在编译错误。

为了便于理解,我想解释一下静态变量可以/不能使用的上下文

假设我们有一个课堂演示

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);
  }
}
现在这个类有一个静态变量
计数器
和成员变量
编号
。类似地,它有两种方法:静态方法
printCounter()
和非静态方法
printNumber()

现在让我们来看看定义

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

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

<>先考虑<代码> PrimeNoUnter()方法。您将通过Demo类的对象调用此方法,如
Demo=newdemo()
。此方法可以访问属于该对象的成员变量。它还可以访问静态变量,因为静态变量属于所有对象。因此,可以在成员函数内访问静态变量


现在让我们考虑<代码> PrimTror()/<代码>方法。您将通过类

Demo.printCounter()
访问此方法。现在想象一下,我们之前创建了3个演示对象,每个对象的
number
值不同。所以,如果我尝试在printCounter()方法中访问
number
,它将访问哪个值?没有一个因为有多个值。因此,无法从静态函数访问成员变量,它显示编译错误。

如果
minA
是静态字段,则警告希望您将
students.get(0).minA
更改为
ClassGrade.minA
。顺便说一句,这只是一个警告:它不会阻止您保存程序。如果
minA
是静态字段,则警告希望您更改
students.get(0).minA
ClassGrade.minA
。顺便说一下,这只是一个警告:它不会阻止你保存你的程序。