JDK 主目錄下面的一個名叫 src.zip的壓縮文件裡面,所有的java類和方法的源文件都在這裡面
如我電腦上的 C:\Program Files\Java\jdk1.6.0_10\src.zip
B. JAVA三層架構裡面的main方法寫在哪裡有main方法嗎
如果自己寫一般的程序,隨便寫一個啟動類,定義main方法。如果是web項目,tomcat等web伺服器已經封裝好了啟動類,無需自己寫,springBoot的啟動類就是xxxxApplication,裡面有main方法
C. JAVA中類中的方法存儲在什麼地方
類的實例方法在內存中是只有一份,不過肯定不會是第一個對象中,如果是第一個對象的話,那麼當第一個對象被銷毀的時候,那麼後面的對象就永遠無法調用了...
類的實例方法存在一個專門的區叫方法區,事實上類剛裝載的時候就被裝載好了,不過它們在"睡眠",只是這些方法必須當有對象產生的時候才會"蘇醒".(比如,一個輸出類的成員變數的方法,如果連對象都沒有,何來的輸出成員變數).所以,方法在裝載的時候就有了,但是不可用,因為它沒有指象任何一個對象。
D. java中方法必須寫在類體里嗎
是的,java一切都是以類的形式存在,方法是類的一部分,需要通過類才能進行方法的調用。
從內存存儲角度來說,java中找對應方法時,都是先找對應類實例,類實例是根據類來初始化內存的。如果方法在類外部,則無法找到該方法。
所以方法必須在類體里。
E. Java程序的main()方法必須都寫在類裡面
main()方法必須都寫在類裡面,在Java中,main()方法是Java應用程序的入口方法,也就是說,程序在運行的時候,第一個執行的方法就是main()方法,這個方法和其他的方 法有很大的不同,比如方法的名字必須是main,方法必須是public static void 類型的,方法必須接收一個字元串數組的參數等等。
在看Java中的main()方法之前,先看一個最簡單的Java應用程序HelloWorld,我將通過這個例子說明Java類中main()方法的奧秘,程序的代碼如下:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
一、先說類:
HelloWorld 類中有main()方法,說明這是個java應用程序,通過JVM直接啟動運行的程序。
既然是類,java允許類不加public關鍵字約束,當然類的定義只能限制為public或者無限制關鍵字(默認的)。
二、再說main()方法
這個main()方法的聲明為:public static void main(String args[])。必須這么定義,這是Java的規范。
為什麼要這么定義,和JVM的運行有關系。
當一個類中有main()方法,執行命令「java 類名」則會啟動虛擬機執行該類中的main方法。
由於JVM在運行這個Java應用程序的時候,首先會調用main方法,調用時不實例化這個類的對象,而是通過類名直接調用因此需要是限制為public static。
對於java中的main方法,jvm有限制,不能有返回值,因此返回值類型為void。
main方法中還有一個輸入參數,類型為String[],這個也是java的規范,main()方法中必須有一個入參,類細必須String[],至於 字元串數組的名字,這個是可以自己設定的,根據習慣,這個字元串數組的名字一般和sun java規范範例中mian參數名保持一致,取名為args。
因此,main()方法定義必須是:「public static void main(String 字元串數組參數名[])」。
三、main()方法不準 throws Exception
因此main()方法中的異常要麼處理,要麼不處理,不能繼續拋出。
比如寫個public static int main(String args[]) throws Exception來定義main方法是錯誤的。
四、main()方法中字元串參數數組作用
main()方法中字元串參數數組作用是接收命令行輸入參數的,命令行的參數之間用空格隔開。
下面給出一個例子,看看如何初始化和使用這個數組的。
public class TestMain {
public static void main(String args[]){
System.out.println("列印main方法中的輸入參數!");
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
執行方法和運行結果
D:\Study\basetest\src>javac TestMain.java
D:\Study\basetest\src>java TestMain 1 2 3
列印main方法中的輸入參數!
1
2
3
五、給出HelloWorld的另外一個版本
public class HelloWorld2 {
static {
System.out.println("Hello Wordld!");
}
public static void main(String args[]){
System.exit(0);
}
}
這個main()方法執行的內容就一句"System.exit(0);" ,目的是讓程序正常結束。那「HelloWorld!」是從哪裡列印的,秘密就是在static列印的,因為static代碼塊的內容會在main調用前調用。
總結:
main方法作為一個特殊的規范,與普通的方法有很大區別,限制很多,理解其原理需要學習JVM相關知識。是Java中學習中大障礙。
F. java中main方法在哪寫
你隨便找一個類,或者新建一個類,在這個類裡面寫main方法就可以了。
publicstaticvoidmain(String[]args){
//這里寫代碼
}
G. java方法怎麼寫
方法的語法如下:
modifier returnValueType methodName(list of parameters) {
// Method body;
}
方法定義包括方法頭和方法體。下面是一個方法的所有部分:
修飾符:修飾符是可選的,告訴編譯器如何調用該方法。這定義了該方法的訪問類型。
返回類型:方法可以返回一個值。returnValueType的值是方法返回的數據類型。有些方法沒有返回值執行所需的操作。在這種情況下,returnValueType是關鍵字void.
方法名稱:這是方法的實際名稱。方法名和參數列表一起構成了方法簽名.
參數:參數像一個佔位符. 當調用一個方法,傳遞一個值給參數. 這個值被稱為實際參數或參數. 參數列表是指類型,順序和方法的參數的個數. 參數是可選的,也就是說,一個方法可以包含任何參數.
方法體:方法體包含定義哪些方法語句的集合.
舉例
publicvoidshow(Stringa){//方法名show和參數a
System.out.println(a);//Methodbody
}
H. JAVA中類中的方法存儲在什麼地方
類載入時 方法信息保存在一塊稱為方法區的內存中, 並不隨你創建對象而隨對象保存於堆中。可參考《深入java虛擬機》前幾章。
另參考(他人文章):
如果instance method也隨著instance增加而增加的話,那內存消耗也太大了,為了做到共用一小段內存,Java 是根據this關鍵字做到的,比如:instance1.instanceMethod(); instance2.instanceMethod(); 在傳遞給對象參數的時候,Java 編譯器自動先加上了一個this參數,它表示傳遞的是這個對象引用,雖然他們兩個對象共用一個方法,但是他們的方法中所產生的數據是私有的,這是因為參數被傳進來變成call stack內的entry,而各個對象都有不同call stack,所以不會混淆。其實調用每個非static方法時,Java 編譯器都會自動的先加上當前調用此方法對象的參數,有時候在一個方法調用另一個方法,這時可以不用在前面加上this的,因為要傳遞的對象參數就是當前執行這個方法的對象。