2010-05-27 25 views

回答

18

它屬於一個類。看看任何你好,世界的實施,這將是很清楚的。

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

將不會按照原樣編譯。你需要在其周圍放置class HelloWorld { ... },在這種情況下,你可以說主要方法「屬於」HelloWorld類。

但是,由於它是靜態,因此不屬於任何特定對象。在使用面向對象的語言時,需要熟悉的類和對象之間存在着重要的區別。 Learning Java: Objects and Classes是一個很好的起點。

+0

現在理解了 – billu 2010-05-27 11:24:14

+4

+1,好抓 - 看起來問題在於對'class'和'object'的理解! – 2010-05-27 11:34:12

2

Java代碼的每一行(除了import/package)都存在於一個類中(或者是一個類/接口聲明)。 main也是如此。

+5

'import'或'package'怎麼辦? ;-) – 2010-05-27 11:17:22

+0

編輯。謝謝。 – miku 2010-05-27 11:20:20

+1

評論怎麼樣? ;-) – 2010-05-27 11:28:46

3

是的。每個方法或字段都必須屬於一個類(或接口/枚舉)。

1

在Java中,任何應用程序在任何類中都必須有main方法。它需要精確的公式:

查看更多in official lessons

+1

如果您將Web應用程序計爲應用程序,那就不是這樣。 Web應用程序不需要'main'方法。 – 2010-05-27 11:20:21

+1

但是爲了執行你的web應用程序,一個'main()'方法必須已經運行......你只是不必寫它。 – Dolph 2010-05-27 14:21:46

2

如果您的意思是它是否屬於每個班級,情況並非如此。它屬於你定義它的類。

但是任何類都可以有靜態的main方法。

0

它不像那個主要的方法屬於任何特定的類,它屬於我們在其中定義主要方法的那個類。它可以是任何類

1

java中的任何類都可以有一個公共靜態void main(String [] args)。在類中聲明的主要函數(就像任何其他靜態方法一樣)屬於類定義,但不是實例化實例。

如果您正在構建從類的集合的JAR文件,你可以指定該JAR中類包含在META-INF/MANIFEST.MF使用

Main-Class: fully qualified name of class (example: ie.mycode.MyApp) 

應用程序main方法當你運行命令

java -jar [your jar file] 

它將看清單,並開始執行在主對主類對象指定代碼。

1

正如前面提到的,它是從一個類,一部分,但不是任何類

如果在該"unnammed" or "default" package類,你的主要方法不會對call any other Java classes從初始級,其主要方法()。
雖然它可以工作,但它會大大限制您在該main方法中實際執行的操作。

所以不使用任何(I,E,而不是一個在默認包)

0

main是通常的方法。唯一的約定是Java可以使用這個(也是唯一的)方法'啓動'一個應用程序。如果您將類傳遞給java.exe,它會嘗試反映此方法(這就是爲什麼方法簽名絕對嚴格!)並調用它(如果找到)。這實際上將'啓動應用程序'(iaw:第一個線程)。

1

它必須屬於一個類,與任何方法一樣,它必須位於您希望在編譯後執行的類中。

程序只能通過執行具有main方法的類開始(注:這是applicale對於大多數類型的Java應用小程序,例如,工作方式不同)

0

當我們試圖運行一個類,其爲什麼錯誤說:exception in thread main這可能發生的路徑是不知道的JVM,那麼你會得到一個錯誤/異常類似下面

Exception in thread main: classdefnotfound........ 

如果主要屬於我們試圖然後運行類,只有當一個線程主正在運行

1

Java中的主要方法屬於一個類,但不屬於對象。對象在運行時創建。因此,由於Java中的主要main()是應用程序的起點,因此無法從特定於實例的方法啓動應用程序。這就是爲什麼static關鍵字與主要方法完美結合的原因。其實主要方法聲明的所有部分做出完美的感覺,當你覺得像「JVM」和畫面的主要方法做什麼(啓動應用程序):

  • public,因爲這種方法必須由可訪問jvm(不是由你寫的)。這意味着這個方法可以在沒有對象的情況下被訪問(因爲它的表示從不改變),但是如果你再次像jvm一樣思考,這裏的邏輯很容易被理解; 「我沒有任何對象來創建(實例化)對象,所以我需要一個靜態方法來啓動應用程序,因爲根本沒有任何合乎邏輯的方法來獲取特定於實例的方法,因爲我沒有任何東西尚未創造物體「。
  • void此方法無法在邏輯上返回任何內容,因爲沒有任何內容尚未返回任何內容。這是應用程序的起點。
  • main我是沒有我的主要方法,你將不會有應用程序。
  • String[] args向我發送可能對我的啓動有用的數據。
相關問題