4
class Employee {    
    int DOB;
    int eid;
    String name;
    double salary;
    System.out.println("Employee class");
}

System.out.printlnメソッドの中に書いてみたら、うまくいきそうです。ただし、クラス内に直接記述した場合はそうではありません。なぜメソッドが必要なのですか?

4

6 に答える 6

8

これは、実行される他のコードと同じです。メソッド内にある必要があります。(はい、そうです、純粋主義者のために、コンストラクターと静的/インスタンス初期化ブロックも含めています。)考えてみてください-提案したようにメソッドまたはその他の関連コードブロック内になかったら、そのコードはいつ取得されますか実行?それはあまり意味がありません。クラス自体を実行することはできません。そのクラスに含まれる特定のメソッド/コンストラクター/などのみを実行できます。

メソッドとコンストラクターの宣言の外側で許可されるのは、フィールドの宣言だけです。System.out.println()はフィールド宣言ではないため、許可されていません。

于 2013-04-09T12:33:05.193 に答える
7

実行されるコードの実行可能ブロック内にある必要があります。そうしないと、いつ実行するかを知る方法がありません。

メソッドである必要はありません。Staticブロックやブロックなど、他のブロックを使用できますInstance

たとえば、ClassLoader によってクラスがロードされるたびにコードを実行する場合は、静的ブロックを使用できます。

public class MyClass{
    static{
        System.out.println("MyClass loaded");
    }
}

そのクラスの新しいインスタンスが作成されるたびにコードを実行する場合は、インスタンス ブロックを使用できます。

public class MyClass{
    {
        System.out.println("New instance of MyClass created");
    }
}

これらのブロックは必要な数だけ持つことができ、クラス本体のどこにでも表示できるということが重要です。ランタイム システムは、それらがクラスに表示される順序で実行されることを保証します。

以下も参照してください。

于 2013-04-09T12:36:26.583 に答える
2

これは、初期化ブロックと呼ばれる別の方法です。"Employee class"これは、作成するたびに印刷されますnew Employee

class Employee {

    int DOB;
    int eid;
    String name;
    double salary;
    {
        System.out.println("Employee class");   
    }

}

あなたの質問について

System.out.printlnがメソッド内にある必要があるのはなぜですか?

Java コンパイラは、このような呼び出しを制限するように設計されています。
これはSystem.out.println、クラスから呼び出すすべてのメソッドに適用されるだけでなく、適用されます。そのようなクラスを事前に作成することを忘れないで
ください。 独自のクラスのメソッドを呼び出してみてください。MySystem.myout.myprintln();

于 2013-04-09T12:36:03.217 に答える
2

クラス内にあり、メソッドの外にある場合、それを呼び出すことはできません。たとえば、getData() などのメソッドを作成して呼び出す必要があります。

Employee e = new Employee().getData();

メッセージを適切に書き込みます。

于 2013-04-09T12:34:03.523 に答える
0

Java クラスを順番に実行されるものと考えないでください。すべての行が読み込まれます。クラスは凝ったツールと考えてください。お気に入り

public class Bathtub {
    private int waterLevel;

    public void drain() {
        waterLevel = 0;
    }

    public void fill(int newWater) {
        waterLevel += newWater;
    }

    public void playWithDuckies() {
        System.out.println("Whee this is fun!!");
    }
}

それぞれの方法は、Bathtub で実行できるものです。スイス アーミー ナイフについて考えてみてください。はさみ、ナイフ、ピンセット、コルク抜きがあります。あなたがそれを呼び出すと、それぞれが目的を果たします。

これらのツールの 1 つを外部に置いSystem.out.println()た場合、それがいつ発生するのか、何が発生するのか、それがどのツールの一部なのかはわかりません。

于 2013-04-09T12:37:32.153 に答える