我想在我的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`
}
}
}
答案 0 :(得分:1)
Java不提供与C和其他语言相同的全局变量。每个变量都与特定的类相关联,并且通常与该类的特定实例相关联。这两个备选方案通过使用static
关键字来区分,该关键字指示变量(或方法或嵌套类)仅与其主机类相关联,而不与该类的任何特定对象相关联。
实现问的最简单方法可能是从静态声明NumberOfMembers
开始,如下所示:
public class Prelim {
// ...
public static int NumberOfMembers;
// ...
}
然后,无论您想在任何其他类中引用它,您都需要使用该类限定其名称,以告诉Java您所指的那个名称的变量:
// ...
Prelim.NumberOfMembers = 100;
// ...
虽然不是绝对必要,但作为一种风格,我建议甚至在主机类内使用合格的表格。
话虽如此,我对你的代码的看法很少,这强调了你承认你没有得到Java。类应该代表的东西,并且为了强化自己和他人,他们的名字应该是名词或名词短语。
您似乎正在围绕处理算法中的步骤组织课程。这会导致代码的任意排列,并直接导致代码注释中有关实例化类Prelim
的一些问题。您正在尝试编写过程代码,但要以面向对象的形式进行修饰。您可以用Java编写过程代码,但您的任务可能也适用于真正的面向对象的方法。
乍一看,代码的面向对象版本可能涉及将其内部化:看起来它至少需要一个具有实例变量Roster
的类numberOfMembers
和方法{{1 }和read()
。这些方法可以自然地引用实例变量,因为它们将引用同一对象的成员变量 。这也可以更好地适应同时在计划中拥有多个名册,每个名册都有自己的成员数。
答案 1 :(得分:0)
你可以使用&#34;静态&#34;关键词例子
static int i = 3;
通过这个,你可以访问包中所有类的变量i,你可以在所有其他包中导入它。
答案 2 :(得分:0)
更复杂的例子是使用枚举类型。使用枚举作为单身人士是一种很好的做法。