運行期和編譯期的區別
① java程序通常要經過五個階段。它們是什麼
分為兩大階段
java編譯期,java運行期
編譯期,1個階段,編譯階段
運行期,4個階段,是
類載入,檢驗class文件,解析器,調用JVM
② 1. 編譯時的多態性與運行時的多態性有什麼區別,他們的實現方法有什麼不同
多態從實現的角度可以劃為兩類:編譯時多態和運行時多態。
編譯時的多態性:就是在程序編譯的時候,也就是生成解決方案的時候就決定要實現什麼操作。
運行時的多態性:就是指直到系統運行時,才根據實際情況決定實現何種操作。
1、多態實現形式不同:
編譯時的多態是通過靜態連編來實現的;運行時的多態是用動態連編來實現的。
2、多態性通過方式不同:
編譯時的多態性主要是通過函數重載和運算符重載來實現的;運行時的多態性主要是通過虛函數來實現的。
(2)運行期和編譯期的區別擴展閱讀:
靜態多態性又稱編譯時的多態性。靜態多態性的函數調用速度快、效率高但缺乏靈活性,在程序運行前就應決定執行的函數和方法。
動態多態性的特點是:不在編譯時確定調用的是哪個函數,而是在程序運行過程中才動態地確定操作所針對的對象。又稱運行時的多態性。動態多態性是通過虛函數(virtual function)實現的。
③ 求教JAVA編譯與運行的區別。
編譯只是編譯成了位元組碼,就是可執行的.class文件
運行時識別,主要是java的RTTI(運行時類型識別)機制和反射機制,而兩者之間的區別在於:
」對RTTI來說,編譯器在編譯期打開和檢查.class文件。(換句話說,我們可以用「普通」的方式調用一個對象的所有方法。),而對於反射機制來說,.class文件在編譯期是不可獲取的,所以是在運行期打開和檢查.class文件。「
但是同樣的,反射也需要載入這個類的Class對象,所以那個類的class對象對於jvm必須是可取的的,比如在本地機器上,或者通過網路取得,比如取得一串位元組串。
具體的內容可以參考《Thinking in java》的」類型識別「那一章,講的比較詳細的
④ C++中什麼是編譯時,什麼是運行時,二者有何區別
這個要理解文件和進程。這里的文件是特指可執行文件。文件里的每個位元組都是不變,這不變的內容是編譯器生成的。記好:編譯是生成可執行文件的過程。是個時限固定的過程,輸入是源代碼,輸出是可執行文件。進程呢?是操作系統管理資源的單位。操作系統載入可執行文件,就會產生一個進程,進程裡面可以使用CPU來執行指令,進行計算機控制。這個執行就是運行。處於執行的時間段就是運行時。銳英源有專業的編程指導,歡迎關注。
⑤ 請問java程序在編譯和運行時有什麼區別,系統分別都會做什麼
Java程序的編譯
使用命令: javac *.java
編譯時,會將寫的.java文件(高級語言),生成相應的位元組碼文件.class文件(二進制代碼)
Java程序的執行
使用命令:java *
流程: 載入到 -- 連接 ---- 初始化 ...
運行時,首先會由將相應的.class文件,載入到內存中,並驗證.class文件的有效性,將相應類的Class載入到內存中,並對類中的靜態變數進行初始化操作,然後就由 主 類開始執行
具體的可以看一下 JVM 類載入過程,以及jVM的內存分配機制
⑥ 運行時和編譯時有沒有什麼區別
運行時 編譯連接並運行 大概意思檢查錯誤並運行,如果錯了,則返回重新編譯,通過則運行
編譯時 編譯連接 檢查錯誤,並不運行,不管對錯,都返回編譯狀態.
關於SIZEOF()
SIZEOF() ()里加數據類型,則計算此數據類型所佔的內存位元組數.
如 SIZEOF( int ) 計算int型所佔的內存位元組數.
SIZEOF() ()里還可以加字元串或一個字元串數組,計算這個字元串的長度,即所佔的內存位元組數.
如 SIZEOF(abcd) 計算abcd這個字元串所佔的內存位元組數,
注意:
計算結果為5,字元型每個字元佔一個位元組,還有一個隱藏的\0,用來結束字元串的,所以要多加一個位元組.
⑦ 什麼是運行時間和編譯時間
運行時間,是指外設輸入後,到計算機執行,再到輸出設備的時間;
編譯時間,是指CPU處理指令到反饋結果的時間。