2013-09-21 132 views
2

即使在Java程序中執行main()之前,我也想要打印"Hello"。有沒有辦法做到這一點?甚至在執行main()之前我要打印「Hello」

+4

在包含'main'的類中使用一個靜態塊。 –

+1

只是好奇心或一些真正的功能需求來完成? –

+0

@Nambari完全有可能。他從未說過他根本不想主要執行。 – arshajii

回答

8

你需要的是一個static關鍵字。其中一個選項是使用靜態函數作爲靜態變量的初始值。

class Main { 
    public static int value = printHello(); 
    public static int printHello() { 
    System.out.println("Hello"); 
    return 0; 
    } 
    public static void main(String[] args) { 
    System.out.println("Main started"); 
    } 
} 

value是前main功能執行這樣初始化的靜態變量。這個程序打印:

Hello 
Main started 

而且,你甚至可以通過調用printHello()即使沒有初始化變量簡化這個喜歡在以下幾點:

static { 
    printHello(); 
} 
4

使用一個靜態塊:

static { 
    System.out.println("hello"); 
} 

public static void main(String[]args) { 
    System.out.println("After hello"); 
} 

輸出:

hello 
after hello 
+1

爲什麼downvote? – BackSlash

4
public class Test { 
    static { 
    System.out.println("Hello"); 
    } 

    public static void main(String[] args) { 
    System.out.println("Inside Main"); 
    } 
} 

輸出

Hello 
Inside Main 
+1

爲什麼downvote在這裏? – arshajii

+0

由於我寫了相同的內容並同意我的回答:+1。只是簡單和短的沒有方法 –

+0

我認爲它的數據庫的stackoverflow故障(關於反對票) –

1

打印的代碼的靜態塊內的語句。靜態塊在類被加載到內存中時甚至在創建對象之前被執行。因此它將在main()方法之前執行。它只會執行一次。

4

公共類樣品{

static { 

    System.out.println("Hello first statement executed first "); 
} 
    public static void main(String[] args) { 
    System.out.println("Main started"); 
    } 
} 
0

這裏是另一種方式:

class One{ 
    public One() { 
     System.out.println("Before main"); 
    } 
} 

class Two extends One{ 
    public Two() { 
     super(); 
    } 
    public static void main(String[] args) { 
     Object abj = new Two(); 
     System.out.println("in the main"); 
    } 
} 

這裏在運行配置中,類2將是主類。

+0

如果我在主函數中的兩個類的對象創建之前編寫打印語句,那麼這將不起作用。例如:'System.out.println(「first line」); Object abj = new Two();' –

相關問題