3

専門家にとっては非常に単純な質問ですが、私のような初心者にとっては混乱するだけです. 私は静的を理解していると思っていましたが、明らかに理解していません。以下はクラス全体で、テストを静的にする必要があると書かれています。しかし、私はしたくありません。これを修正するにはどうすればよいですか?また、そもそもなぜそれが起こっているのですか? ありがとう!

public class SubstringTest
{
    private String test;

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

    }

}
4

3 に答える 3

9

main静的です。testではありません。

test静的にしたくない場合は、firstのインスタンスを作成する必要があります。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";
于 2013-02-22T02:55:21.037 に答える
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));

}

}
于 2013-02-22T02:55:12.550 に答える
4

Static メソッドからインスタンス変数にアクセスすることはできません。

静的メソッドは、クラスのオブジェクトではなく、クラス インスタンスで呼び出されるためです。つまり、インスタンス変数はオブジェクト内でのみインスタンス化されるため、静的メソッドはインスタンス変数にアクセスできません。

于 2013-02-22T02:56:51.147 に答える