導航:首頁 > 源碼編譯 > 模塊編譯順序java

模塊編譯順序java

發布時間:2022-01-14 01:06:54

java編譯執行順序

當你執行 new Z();時,
先載入父類X,
X的載入順序,先載入初始化部分,也就是Y b = new Y();列印Y
然後執行X的構造函數,列印出X。
然後載入子類初始化部分,也就是Y y = new Y();列印Y
最後執行子類構造函數,列印出Z

⑵ 簡述JAVA程序的編輯編譯和運行過程

第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點象make。

如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。

第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。

特別說明:java類中所有public和protected的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法<clinit>都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。

(2)模塊編譯順序java擴展閱讀:

Java整個編譯以及運行的過程相當繁瑣,本文通過一個簡單的程序來簡單的說明整個流程。

Java代碼編譯:是由Java源碼編譯器來完成;

Java位元組碼的執行:是由JVM執行引擎來完成

Java程序從源文件創建到程序運行要經過兩大步驟:

1、源文件由編譯器編譯成位元組碼(ByteCode)

2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。

⑶ 求這段Java代碼的編譯順序

不知樓主對繼承和多態這部分的理解是否透徹,建議再好好去看看

解答:
這道題用到了多態。
static void bogo(Base b)這個函數的參數是Base類型,而在主函數調用時卻傳入了一個Base的子類Extension類對象,即把Extension類對象上轉類型,屬於多態。
首先,主函數中調用bogo(new Extension()),於是JVM創建了一個Extension類對象。但由於Extension類繼承於Base類,於是會最先調用Base(){add(1);}。

前面說有,由於是多態,在Base(){add(1);}里,是調用Extension類中的add()函數,於是調用void add(int v){i+=v*2;},這時i=2。

接著才調用Extension(){add(2);},其中的add(2)還是調用調用void add(int v){i+=v*2;},這時i=6。

這時類對象的構建完成,開始調用
static void bogo(Base b)
{
b.add(8);
b.print();
}
由於主函數中傳入的參數是Extension類
於是調用Extension類中的
void add(int v){i+=v*2;}
這時i=22.
最後調用沒有被Extension類覆蓋的void print(){System.out.println(i);}}。
輸出22.

⑷ java中編譯順序和運行順序是一樣的嗎

java是面向對象的語言,面向對象的特性之一就是重載,也就是方法的參數列表不同,其它聲明都一樣,這樣編譯的時候無論先編譯哪個都不表示先運行哪個,因為,重載決定在運行期,只有運行的時候,看真正調用哪一個,才去運行哪一個,所以編譯順序和運行順序是不一樣的。

--------------------------------
編譯都幹了什麼,具體我也說不清楚,只直到類成員是優先的。

⑸ java程序類的編譯順序和運行順序一樣嗎

先後順序如下! 1.靜態塊 2.塊 3.構造器 4.父類構造器 運行順序為: 1. 靜態塊 2. 父類構造器 3. 本類中的塊 4. 本類的構造器

⑹ java程序的執行和編譯順序

這個程序就是實驗在類初始化時的執行順序:先初始化構造函數外的靜態變數,再初始化非靜態變數,再調用構造函數

⑺ 關於所謂java編譯原理執行順序

System.in
相當於一個緩沖池

裡面如果有內容了 馬上就會執行後面的內容

建議你看看java 中流文件的部分就能明白了

並不是像你想想的 到那行之後執行後面而是相當於 一個監聽的感覺 這個緩沖池一直存在 來了之後馬上進行後續處理 再來時再處理

⑻ Java編譯順序的問題

存在父類時對象的實例化先編譯父類;
如果子類沒有實現父類的介面,屬於語法錯誤,無法通過編譯;
子類沒有實現父類的介面是子類的錯,父類沒有錯,即使不存在子類,父類也是可以編譯得過的。
你的答案應該選B:
但是,實際編譯是這樣:
如果你直接javac Square.java,語法檢查未通過,編譯器將不工作;而正確編譯時將得到父類與子類的class文件。
如果你先javac Shape.java,將得到Shape.class,再執行javac Square.java(未實現介面的)時,你仍將只會看到Shape.class。

⑼ JAVA編譯執行順序

類中的靜態變數和靜態方法因為是靜態的,所以你不管創建多少個對象還是直接引用在系統中都只是這一個變數或方法,所以你的三個調用 doing 輸入是一樣的,你給 name 賦值多少次,最後都只是最後一次的

⑽ 關於java中一次編譯多個源文件時的編譯順序的問題

在java編譯過程中,確實是會自動尋找的.當它先編譯Test的時候,發現需要先編譯TestPackage類,才能完成編譯Test的工作,然後編譯器開始編譯TestPackage.
如果,你的這兩個java文件都沒有打包,並且在同一個目錄下的話,你可以通過直接輸入javac Test.java看到,盡管你沒有發出命令要求編譯TestPackage類,但是由於編譯器檢測到需要有TestPackage類的支持,才能編譯Test,所以這時TestPackage也被編譯了.
現在程序打包了,你先編譯Test的這種情況下,編譯器先找的是包,而你的包org.it315.example是不存在的,所以會出錯

閱讀全文

與模塊編譯順序java相關的資料

熱點內容
如何去掉app資源庫的建議 瀏覽:727
中興研發面試要寫演算法嗎 瀏覽:64
linux系統配置文件 瀏覽:600
php登錄網頁模板 瀏覽:930
windownginxphp 瀏覽:508
resync命令 瀏覽:535
dos命令手冊 瀏覽:286
矽谷編程二維數組 瀏覽:40
inside游戲什麼時候移植安卓 瀏覽:943
極光安卓是什麼 瀏覽:540
如何減少pdf文件大小 瀏覽:83
ios屏幕新建文件夾 瀏覽:297
單片機固定座 瀏覽:322
一名程序員的生活 瀏覽:989
伺服器電源卡插頭如何拔 瀏覽:487
三水資料加密怎麼選 瀏覽:800
android收不到udp廣播 瀏覽:383
如何免費開手游非官方伺服器 瀏覽:648
全譯本和編譯 瀏覽:55
安卓系統如何清理垃圾 瀏覽:373