Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop - Fatal编程技术网

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初始化testString1t1t2实际上是指同一个变量。因此,当您打印t1.getString()时,它会得到testString1的更新值。第二双眼睛总是有帮助的…:-)你能接受一个答案以便你的问题被标记为已回答吗?
st1
st2
st1
st2