java的編譯和運行
java是面向對象的語言,面向對象的特性之一就是重載,也就是方法的參數列表不同,其它聲明都一樣,這樣編譯的時候無論先編譯哪個都不表示先運行哪個,因為,重載決定在運行期,只有運行的時候,看真正調用哪一個,才去運行哪一個,所以編譯順序和運行順序是不一樣的。
--------------------------------
編譯都幹了什麼,具體我也說不清楚,只直到類成員是優先的。
⑵ 簡述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程序
開始-》運行-》輸入cmd回車
編譯:文件所在的文件夾目錄下執行javac XXX.java(XXX.java為源文件名)
運行:java XXX
⑷ 請問java程序在編譯和運行時有什麼區別,系統分別都會做什麼
Java程序的編譯
使用命令: javac *.java
編譯時,會將寫的.java文件(高級語言),生成相應的位元組碼文件.class文件(二進制代碼)
Java程序的執行
使用命令:java *
流程: 載入到 -- 連接 ---- 初始化 ...
運行時,首先會由將相應的.class文件,載入到內存中,並驗證.class文件的有效性,將相應類的Class載入到內存中,並對類中的靜態變數進行初始化操作,然後就由 主 類開始執行
具體的可以看一下 JVM 類載入過程,以及jVM的內存分配機制
⑸ 求教JAVA編譯與運行的區別。
編譯只是編譯成了位元組碼,就是可執行的.class文件
運行時識別,主要是java的RTTI(運行時類型識別)機制和反射機制,而兩者之間的區別在於:
」對RTTI來說,編譯器在編譯期打開和檢查.class文件。(換句話說,我們可以用「普通」的方式調用一個對象的所有方法。),而對於反射機制來說,.class文件在編譯期是不可獲取的,所以是在運行期打開和檢查.class文件。「
但是同樣的,反射也需要載入這個類的Class對象,所以那個類的class對象對於jvm必須是可取的的,比如在本地機器上,或者通過網路取得,比如取得一串位元組串。
具體的內容可以參考《Thinking in java》的」類型識別「那一章,講的比較詳細的
⑹ 請問java中的編譯期和運行期有什麼區別
編譯時是調用檢查你的源程序是否有語法錯誤,如果沒有就將其翻譯成位元組碼文件。即.class文件。
運行時是java虛擬機解釋執行位元組碼文件。
⑺ java的編譯和運行命令是怎麼樣的啊
我是把代碼放在jdk1.5.0\bin目錄下的 按照這樣進行
cd C:\program files\java\jdk1.5.0\bin
編譯:javac 類名.java
運行:java 類名
建議用eclipse這類軟體,很方便的
⑻ java的編譯和運行
try catch獲取的只能你自己看到吧,如果我想把這個異常信息發送給別人,或者寫入一個文件,那你怎麼辦?你是不是要獲取到這個流
你想別人看到這個是需要你自己來實現.比如在這里記錄日誌 可以通過log4j來進行記錄
catch (Exception e)
{
log.error(e.toString() + ":" + e.getMessage());
}
這樣 就會寫入到 log文件中記性記錄
或者你一個方法
public string ooo()
{
......
catch (Exception e) {
rentru *****(返回的信息由你自己定義 你可以定義直接返回操作描述 比如成功或者出錯) }
}
思路就是這樣.. 具體實現有很多.。你在異常這里捕獲了 ..然後根據不同的異常 再對用戶進行提示
⑼ JAVA的源程序是怎樣被編譯和運行的
java
程序
編譯是根據「類庫」
也就是
jvm了
解釋編譯。
在用到的時候必須要有識別「解釋後的java程序的類庫
兩個過程
java原程序-----java.class
文件====
解釋執行
這兩個過程中都要用到
類庫
⑽ java的 編譯和運行
你知道Javac會把 .java 文件編譯成 .class 文件然後運行 對吧
你想想如果在如果編譯的時候不去讀取 .java 文件的內容 怎麼可能編譯成 .class文件呢
在編譯時證是運行了.java文件的內容發現了你這個程序有語法錯誤就會編譯失敗 就沒有必要繼續編譯成 .class文件
當然有些錯誤是可以逃避編譯器的。
你也知道Java分 運行時error和編譯時的error!
個人理解。不保證100%正確性!