java類被使用才編譯嗎
兩個類都在同一包用*.java這么編譯當然會把A也直接編譯了,這么編譯完兩個類應該也都在當前目錄裡面出現,你可以找找看看,如果沒有還有可能是你'A'類的文件名可能與某個別的類重了,所以B也就能繼承,再看看吧
② 我在程序里導入的Java類,他會編譯進去嗎,或者說他會把Java自帶的類庫一起全部都編譯了嗎!
Java自帶的不會,Java虛擬機里有這些預制類,運行時能自動映射到。只有外部做成的jar包類才會被編譯進入。
③ Java是解釋型還是編譯型
它既不屬於傳統的編譯型語言也不屬於解釋型語言。它是先編譯成.CLASS位元組碼文件,然後再利用虛擬機解釋執行的.可以說先編譯後解釋吧。
④ 請問java程序在編譯和運行時有什麼區別,系統分別都會做什麼
Java程序的編譯
使用命令: javac *.java
編譯時,會將寫的.java文件(高級語言),生成相應的位元組碼文件.class文件(二進制代碼)
Java程序的執行
使用命令:java *
流程: 載入到 -- 連接 ---- 初始化 ...
運行時,首先會由將相應的.class文件,載入到內存中,並驗證.class文件的有效性,將相應類的Class載入到內存中,並對類中的靜態變數進行初始化操作,然後就由 主 類開始執行
具體的可以看一下 JVM 類載入過程,以及jVM的內存分配機制
⑤ java 缺少引用類能正確編譯嗎
不可以
比如
publicclassGotDeps{
publicstaticvoidmain(String[]args){
inti=1;
Dep.foo(i);
}
}
Dep的foo方法簽名是
publicstaticvoidfoo(intn)
編譯之後會產生如下命令:
publicstaticvoidmain(java.lang.String[]);
Code:
0:iconst_1
1:istore_1
2:iload_1
3:invokestatic#16;//MethodDep.foo:(I)V
6:return
如果簽名是
publicstaticvoidfoo(longn)
編譯之後的命令:
publicstaticvoidmain(java.lang.String[]);
Code:
0:iconst_1
1:istore_1
2:iload_1
3:i2l
4:invokestatic#16;//MethodDep.foo:(J)V
7:return
所以java編譯器並不知道這些信息,你讓它怎麼編譯?因此是不可以的
⑥ jdk中提供了什麼方法對java類文件進行編譯
不要著急
慢慢來
加入你編譯程序的名字是hello.java
1.把它放到d盤根目錄下
2.進去dos
轉到d盤
3.使用javac.hello.java命令
4.這時候你可以看到在hello.java旁邊多了一個hello.class文件
5.使用java.hello
就可以編譯成功了
希望對你有幫助
加油
⑦ JAVA如何在運行時編譯一個類
你的問題說得太不清楚了。。是不是問把修改後的java類編譯好後,再發布到伺服器上?
重新發布java類,伺服器一般會自動重起,然後載入這個類。
⑧ Java中類載入出現在哪個階段,編譯期和運行期 類載入和類裝載是一樣的嗎
使用的類,編譯/運行時都會被載入。
載入/裝載沒有區別,翻譯的詞彙選擇因人而異了
運行 javac /java 時 加上 -verbose 選項就可以看到了。
⑨ java程序編譯時,方法是不是只在調用時才使用
因為在父類裡面被調用了,這個方法您是重寫了父類的方法