静态变量不需要

Evo*_*lor 3 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));

    }

}
Run Code Online (Sandbox Code Playgroud)

Doo*_*nob 9

main是静态的.test不是.

如果你不想做test静态,你必须创建一个实例SubstringTest第一.

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

如果test是静态的,你可以这样做

SubstringTest.test = "test";
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在编写的代码在类中SubstringTest 并且 test是静态的:

test = "test";
Run Code Online (Sandbox Code Playgroud)


Ach*_*Jha 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));

}

}
Run Code Online (Sandbox Code Playgroud)