我的问题很简单,即使是我的Java 1课程,但我似乎无法解决这个问题。为什么我的主类不能看到在另一个中初始化的变量?我正在使用NetBeans。我正在创建项目Test123,然后是一个类TestStuff。两者都使用包test123。它们位于NetBeans将其发送到的同一个src文件夹中。
package test123;
public class Test123 {
public static void main(String[] args) {
help = "hi";
thank = "hello";
}
}
package test123;
public class TestStuff {
String help;
String thank;
public void weee(){
System.out.print("yay");
help = "me";
thank = "you";
}
}
答案 0 :(得分:0)
变量help
和thank
是实例变量。如果您创建类型为TestStuff
的对象,则该对象将包含变量help
和thank
。 (如果您创建更多类型为TestStuff
的对象,则每个对象都有自己的help
和thank
变量。)要获得它们,您必须创建一个类型为{的对象{1}}(即TestStuff
的实例),然后访问属于该对象的变量:
TestStuff
你只需要在TestStuff testObject = new TestStuff();
testObject.help = "hi";
testObject.thank = "hello";
课程之外,而不是在课堂内。
答案 1 :(得分:0)
只需创建一个TestStuff类的实例,如:
TestStuff testobject= new TestStuff();
testobject.help="hii";
testobject.thank="hello"
将此代码放在main()方法内的Test123类中。 获取对变量的访问绑定到TestStuff类的对象。
答案 2 :(得分:0)
变量help
和thank
在类中声明,称为实例变量。该类的每个实例都有自己的变量副本。您应该将它们声明为私有,并提供getter / setter来访问它们。
public class TestStuff {
private String help;
private String thank;
public String getHelp() {
return help;
}
public void setHelp(String help) {
this.help = help;
}
public String getThank() {
return thank;
}
public void setThank(String thank) {
this.thank = thank;
}
public void weee() {
System.out.println("yay");
help = "me";
thank = "you";
}
}
然后,您可以创建该类的实例并在该实例上调用方法。它将更改该实例的变量help
和thank
的值。
public class Test123 {
public static void main(String[] args) {
TestStuff testStuff = new TestStuff();
System.out.println("Before: " + testStuff.getHelp() + " " + testStuff.getThank());
testStuff.weee();
System.out.println("After: " + testStuff.getHelp() + " " + testStuff.getThank());
}
}
正如预期的那样,输出将是: 之前:null null 好极了 之后:我你