❶ class對象是在編譯後生成的(存在同名.class文件中)既然編譯後就生成了class對象為什麼JVM載入時又生成個
舉例說明下吧:
定義三個類
public class Bill {//省略細節}
public class PhoneBill extends Bill {//省略細節}
public class GasBill extends Bill {//省略細節}
在處理程序里有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//計算電話賬單
}
❷ java源程序編譯過後的文件是什麼文件
如果java項目的話編譯文件在項目目錄下的bin文件夾下如果是web項目編譯文件在web目錄/WEB-INF/classes/下面只有編譯後的代碼虛擬機才能執行
❸ java編譯好後 如何去運行
java hello
編譯後生成一個hello.class的文件,用java hello就可以運行了。
在環境變數中設置path後面加上你的jdk\bin的目錄就可以在別的文件夾下運行javac了。
❹ java的源代碼是先編譯成JAVA位元組碼後,再由JVM根據不同的OS生成機器代碼才能運行嗎
JVM只會識別位元組碼文件,就是.class文件。所有如果不預先把java文件編譯成位元組碼文件JVM是無法運行的。
但是不同的OS,只要安裝jvm,那麼你預編譯的class文件在任何OS上都可以運行,就是java的移植性比較強
❺ java程序經編譯後會產生什麼
java程序在編譯(javac .java文件名 指令)後會產生位元組碼文件,也就是.class文件。然後根據虛擬機所在系統(l例如:xp、win7、Linux)的不同將位元組碼文件轉變為不同的可執行文件,這也是java程序可跨平台的根據。
❻ java程序編譯後會不會產生machine code
不會,只會生成位元組碼文件。
Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。
Java還剔除了C++的操作符過載和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。
Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發上。
(6)jvm編譯後擴展閱讀:
Java設計成支持在網路上應用,它是分布式語言。Java既支持各種層次的網路連接,又以Socket類支持可靠的流網路連接,所以用戶可以產生分布式的客戶機和伺服器。網路變成軟體應用的分布運載工具。Java程序只要編寫一次,就可到處運行。
在一個解釋性的環境中,程序開發的標准「鏈接」階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。
因此,Java支持快速原型和容易試驗,它將導致快速程序開發。這是一個與傳統的、耗時的「編譯、鏈接和測試」形成鮮明對比的精巧的開發過程。
❼ JAVA中編譯後執行
你的意思是在UitraEdit設置java環境嗎?如果你沒有設置java環境,請看下面,如果設置好了,你就在高級->工具配置->輸出(第三個選項),把顯示dos窗口選上,那裡有很多選項,自己選擇喜歡的模式
=======================================
一、定義「編譯java程序」
1、打開 高級->工具配置
2、我們先定義編譯java的工具,先點擊「插入」 按鈕
3、在「菜單項目名稱」上輸入「編譯java程序」(顯示在菜單上的名稱)
4、在「命令行」里輸入javac %n%e(%n為文件名不帶擴展名,%e為擴展名)
5、在「工作目錄」上填 %p (表示文件所在目錄)
(工具欄點陣圖可以不添)
6、切換到「輸出」項;
7、選擇「輸入到列表框」,表示講命令的結果輸出到列表框上
選擇「捕獲輸出」復選框,表示講執行的結果捕獲,輸出到下面的輸出框里
8、點擊「應用」按鈕,「確定」,一個編譯的菜單就做好了
二、定義「運行java程序」
同樣的方法可以做運行java的菜單:
1、在「菜單項目名稱」上輸入「運行java程序」(顯示在菜單上的名稱)
2、在「命令行」里輸入 java %n (%n為文件名不帶擴展名,%e為擴展名)
3、在「工作目錄」上填 %p (表示文件所在目錄)
餘下步驟和第一個配置一樣
現在你打開高級菜單,發現最下面多了二個你剛才定義的菜單;
三、定義「編譯+運行java程序」
根據上面的方法,你還可以定義其他工具比如定義一個把編譯和運行合在一起的菜單
做一個批處理的文件run.bat,放在C:盤(其他地方也可以),內容如下
javac %1.java
java %1
然後按照上面的方法:
1、在「菜單項目名稱」上輸入「編譯+運行java程序」(顯示在菜單上的名稱)
2、在「命令行」里輸入 C:\run.bat %n (%n為文件名不帶擴展名,%e為擴展名)
3、在「工作目錄」上填 %p (表示文件所在目錄)
餘下步驟和第一個配置一樣
四、自動完成
一般軟體上都有自動完成的功能,UltraEdit也可以實現
1、先講java中的關鍵字,各種類名,方法等名稱寫到一個文本文件上,以如下方式
class
private
public
...
然後存為文本,命名為「java.txt」
2、選擇菜單「高級->配置」,
在「編輯器」中選中「自動完成」,把「自動顯示自動完成對話框」打上勾
選中「自動換行/製表符設置」,在「自動完成文件」中選擇存放文本java.txt的路徑
這是當你在輸入單詞的時候會自動彈出你所自定義的單詞,很方便
❽ java編譯器和JVM有什麼區別
java編譯器把java源碼編譯成位元組碼 (.class文件).
jvm是在運行期將class文件編譯成機器碼文件.供程序運行.
❾ java程序經編譯後會產生什麼
產生:byte code
Java位元組碼是Java源文件編譯產生的中間文件
java虛擬機是可運行java位元組碼的假想計算機 java的跨平台性也是相對與其他編程語言而言的
先介紹一下c語言的編譯過程吧先是C語言源程序 也就是c的文件經過C編譯程序編譯後,生成windows可執行文件exe文件,然後在windows中執行。再介紹java的編譯過程先是java源程序擴展名為java的文件,由java編譯程序將java位元組碼文件,就是class文件然後在java虛擬機中執行。機器碼是由CPU來執行的。Java編譯後是位元組碼, 電腦只能運行機器碼。Java在運行的時候把位元組碼變成機器碼。C/C++在編譯的時候直接編譯成機器碼。
❿ java程序編譯後會產生位元組碼還是機器碼
Java編譯後是位元組碼,C/C++以前全都是是機器碼。
電腦只能運行機器碼。Java在運行的時候把位元組碼變成機器碼。
C/C++在編譯的時候直接編譯成機器碼。
不過現在微軟的Visual Studio C++ 2005以後的C++也可以編譯成位元組碼,用CLR運行是轉換成機器碼(和Java差不多)。