如何在Java中创建可由多个类和多个方法访问的变量

如何在Java中创建可由多个类和多个方法访问的变量,java,eclipse,Java,Eclipse,我想在Java程序中创建一个全局变量,或者至少创建一个可以由多个类的多个方法访问的全局变量。我精通C、VB6、Jovial和许多其他语言,但不懂Java。我只为WindowBuilder选择了它 下面是一些我想要的类似Java的伪代码,以显示我正在尝试做什么。我知道它没有按原样编译;我重点关注的是NumberOfMembers变量——应该如何声明和访问它: public class Prelim { public String FileName; public int Numbe

我想在Java程序中创建一个全局变量,或者至少创建一个可以由多个类的多个方法访问的全局变量。我精通C、VB6、Jovial和许多其他语言,但不懂Java。我只为WindowBuilder选择了它

下面是一些我想要的类似Java的伪代码,以显示我正在尝试做什么。我知道它没有按原样编译;我重点关注的是
NumberOfMembers
变量——应该如何声明和访问它:

public class Prelim {
    public String FileName;
    public int NumberOfMembers;  //instantiate?  I've tried all I know
    //to do so!  Instantiate where, all methods that use?

    private void myMethod_a() {
        FileName = "C:\myfilename";
        ReadRoster();
        //modify roster
        WriteRoster();
        System.out.println(NumberOfMembers);
    }


}

public class ReadWriteRoster /* maybe extends Prelim?? */ {  
    public void ReadRoster(){
        //read roster file using FileName
        NumberOfMembers = 100;
    }
    public void WriteRoster(){
       //write roster file using FileName
        for (int num = 0; num < NumberOfMembers; num++){
        }
        //do the write`enter code here`
        }
    }
}
公共类预调试{
公共字符串文件名;
public int NumberOfMembers;//实例化?我已经尝试了所有我知道的
//为此,请在何处实例化所有使用的方法?
私有void方法_a(){
FileName=“C:\myfilename”;
读花名册();
//修改花名册
WriteRoster();
System.out.println(NumberOfMembers);
}
}
公共类ReadWriterMaster/*可能扩展了Prelim???*/{  
公开无效读名册(){
//使用文件名读取花名册文件
成员数=100;
}
public void WriteRoster(){
//使用文件名写入花名册文件
for(int num=0;num
您可以使用“静态”关键字示例

静态积分i=3


有了它,您可以访问包的所有类中的变量i,并可以在所有其他包中导入该变量。

更复杂的示例是使用枚举类型。使用enum作为单例是一个很好的实践

Java不像C和其他一些语言那样提供全局变量。每个变量都与特定的类相关联,并且通常与该类的特定实例相关联。通过使用
static
关键字来区分这两个选项,该关键字表示变量(或方法或嵌套类)仅与其宿主类关联,而不与该类的任何特定对象关联

要实现您的要求,最简单的方法可能是静态地声明
NumberOfMembers
,如下所示:

public class Prelim {
    // ...
    public static int NumberOfMembers;
    // ...
}
然后,无论您想在任何其他类中引用它,您都需要使用该类限定其名称,以告诉Java您指的是该名称的哪个变量:

    // ...
    Prelim.NumberOfMembers = 100;
    // ...
虽然这不是严格必要的,但作为一种风格,我建议即使在宿主类中也使用限定的形式

话虽如此,我对您的代码所看到的一点都强调了您承认您没有获得Java。类应该代表事物,为了加强这一点,对你自己和其他人来说,它们的名称应该是名词或名词短语

相反,您似乎是围绕处理算法中的步骤来组织类。这会导致代码的任意排列,并直接导致代码注释中有关实例化类
Prelim
的一些问题。您正在尝试编写过程代码,但将其修饰为面向对象的形式。您可以用Java编写过程代码,但您的任务可能也会采用真正的面向对象方法


乍一看,代码的面向对象版本可能需要将其翻过来:看起来它至少需要一个类
花名册
,带有实例变量
numberOfMembers
和方法
read()
write()
。这些方法可以自然地引用实例变量,因为它们将引用同一对象的成员变量。这也更好地适应了同时在项目中有多个名册的情况,每个名册都有自己的成员数。

我花了1.5分钟找到了这个问题:请在您的帖子中格式化代码,以便人们可以阅读。