2013-08-11 13 views
5
public class Test { 

/** 
* @param args 
*/ 

// 1st way 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    System.out.println("Test....!!!!!"); 
} 

// 2nd way 
static{ 
System.out.println("Test....!!!!!"); 
System.exit(1); 
} 

// 3rd way 
private static int i = m1(); 
public static int m1(){ 
    System.out.println("Test...!!!!"); 
    System.exit(0); 
    return 0; 
} 

これ以外の方法でメッセージを印刷することはできますか。メインメソッド、静的変数、静的メソッドを使用せずにJavaメッセージをコンソールに出力できますか?

+0

私はから考えますJava 7以降では、2番目の方法は印刷されません(そしてそれは静的なブロックではなく、メソッドであると呼ぶ) – kosa

+2

@ Nambariあなたはそれを言うのですか? –

+2

質問は明確ではありません。 * main()を使って*これまでに*使用していないことを意味しますか? #2と#3は、このような宣言を含むクラスをロードした* main()メソッドが呼び出されない限り動作しません。 –

答えて

7

もちろん、classのコンストラクタ、メソッドまたはインスタンスブロックからもできます。

コマンドラインで簡単なプログラムを起動する場合(例:java -jar myProgram)、コンソールにインスタンスコードを印刷するクラスをインスタンス化する必要があります(mainメソッド)。例えば

classFoo与えて:

public class Foo { 
    // Initializer block Starts 
    { 
     System.out.println("Foo instance statement"); 
    } 
    // Initializer block Ends 

    public Foo() { 
     System.out.println("Foo ctor"); 
    } 
    public void doSomething() { 
     System.out.println("something done from this Foo"); 
    } 
} 

は...今、あなたのMainクラスのmain方法から:

public static void main(String[] args) { 
    new Foo().doSomething(); 
} 

が出力:

Foo instance statement 
Foo ctor 
something done from this Foo 
+0

あなたはいくつかのライトを投げてください。System.out.println( "Foo instance statement");このクラスのオブジェクトを作成するたびに実行されますか? – Algorithmist

+0

@アルゴリズム主義者。 'Foo'の新しいインスタンスごとにインスタンス文が実行されます。 – Mena

+0

しかし、それはどのように動作していますか、それはコンストラクタの一部でも他のものでもなく、単なるブロックです。 – Algorithmist