Java 用不同的输入实例化一个类
我有一个问题,现在我有两门课如下Java 用不同的输入实例化一个类,java,oop,Java,Oop,我有一个问题,现在我有两门课如下 public class mainClass { public static void main(String[] args){ String st1="st1"; String st2= "st2"; System.out.println(st1); System.out.println(st2); testClass t1=new testClass(st1);
public class mainClass {
public static void main(String[] args){
String st1="st1";
String st2= "st2";
System.out.println(st1);
System.out.println(st2);
testClass t1=new testClass(st1);
testClass t2=new testClass(st2);
System.out.println(t1.getString());
System.out.println(t2.getString());
}
}
public class testClass {
static String testString1;
public testClass(String a ) {
testString1=a;
}
public String getString(){
return testString1;
}
}
输出 输出不应该是以下的吗
st1
st2
st1
st2
既然我创建了两个testClass实例,每个实例都有不同的输入,为什么我会得到相同的输出???您的
testClass
中的testString1
变量被声明为静态的,所以它将在testClass
的所有实例中保持相同的值
如果希望
testString1
为创建的每个testClass实例保存唯一的值,则需要删除静态声明。testString1
是(static String testString1;
),因此它在类的所有实例之间共享。静态字符串testString1代码>应该是字符串testString1代码>。通过声明它static
,您已经将单个String
实例(名为testClass.testString1
)与testClass
的所有实例关联起来,因为static关键字是。
Static表示该类的所有实例的字符串都相同。删除它,它将按预期工作。输出与静态变量类似。您必须理解静态才能理解输出
静态变量是共享对象所有实例的变量。您可以在不创建实例的情况下访问它。如果从一个实例更改它,则对象将找到更改
创建实例t1时,静态字符串testString1使用st1初始化。但是下一行创建实例t2,并用st2初始化testString1t1和t2实际上是指同一个变量。因此,当您打印t1.getString()时,它会得到testString1的更新值。第二双眼睛总是有帮助的…:-)你能接受一个答案以便你的问题被标记为已回答吗?
st1
st2
st1
st2