静态变量不需要

时间:2013-02-22 02:53:31

标签: java eclipse static

对于专家来说这是一个非常简单的问题,但对于像我这样的初学者来说,这只是令人困惑。我以为我理解静态,但显然我没有。以下是整个课程,它说我需要进行静态测试。但我不想。我该怎么做才能解决这个问题,为什么它首先发生?谢谢!

public class SubstringTest
{
    private String test;

    public static void main(String[] args)
    {
        test = "Penguin";
        System.out.println(test);
        System.out.println(test.substring(3));

    }

}

3 个答案:

答案 0 :(得分:9)

main是静态的。 test不是。

如果您不想让test成为静态,则必须首先创建SubstringTest实例

SubstringTest st = new SubstringTest(); // create an instance
st.test = "test"; // this works
System.out.println(st.test); // also works

如果test是静态的,您可以执行

SubstringTest.test = "test";

或者,如果您正在撰写的代码在课程SubstringTest test是静态的:

test = "test";

答案 1 :(得分:5)

静态方法无法访问非静态/实例变量,因为静态方法永远不会与任何实例关联。静态方法不能直接调用非静态变量。但静态方法可以通过声明实例并使用它们来访问非静态变量。

public class SubstringTest
{
private String test; // make it private static String test;

public static void main(String[] args)
{   // SubstringTest t = new SubstringTest(); Or change here.
    // t.test ="Penguin";
    test = "Penguin";
    System.out.println(test);
    System.out.println(test.substring(3));

}

}

答案 2 :(得分:4)

无法从静态方法访问实例变量。

因为在类实例上调用静态方法而不是类的对象。这意味着静态方法无法访问实例变量,因为它们仅在对象中实例化