Java的編譯時(shí)錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤問題
Java編譯時(shí)錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤
1. 要區(qū)分編譯時(shí)錯(cuò)誤和運(yùn)行時(shí)錯(cuò)誤,就應(yīng)該先明白什么是編譯?什么是運(yùn)行?
首先,先看一下這張圖:

編譯期就是將我們寫的java源代碼交給編譯器執(zhí)行的過程,起翻譯的作用,該過程主要對java源代碼的語法進(jìn)行檢查,如果沒有語法錯(cuò)誤,就將源代碼編譯成字節(jié)碼文件(即.class文件);
運(yùn)行期則是將字節(jié)碼文件(.class文件)加載到內(nèi)存中交給java虛擬機(jī)執(zhí)行,直到程序執(zhí)行結(jié)束的過程,該過程主要對程序的邏輯錯(cuò)誤進(jìn)行檢查,如果沒有邏輯錯(cuò)誤,程序的功能得到實(shí)現(xiàn),輸出結(jié)果。
2. 編譯期和運(yùn)行期的內(nèi)存分配區(qū)別。
①編譯期只是在程序的字節(jié)碼文件中產(chǎn)生一些控制程序運(yùn)行時(shí)分配內(nèi)存的指令,僅僅是知道內(nèi)存分配的大小以及存放的位置,不做具體的分配操作。
②運(yùn)行期才是對內(nèi)存真正的分配,確定程序分配內(nèi)存的大小,以及這些變量該存放內(nèi)存的位置。
3. 在eclipse開發(fā)java項(xiàng)目時(shí),怎么區(qū)分編譯錯(cuò)誤和運(yùn)行錯(cuò)誤?
①編譯錯(cuò)誤一般指語法錯(cuò)誤或者很明顯的邏輯錯(cuò)誤。
如:缺少分號,少寫括號,關(guān)鍵字書寫錯(cuò)誤等, 在eclipse往往會畫紅線。
②運(yùn)行錯(cuò)誤是在沒有編譯錯(cuò)誤的基礎(chǔ)上運(yùn)行后產(chǎn)生的邏輯錯(cuò)誤。
如:空指針異常,除數(shù)為0,越界訪問等,一般會拋出異常。
4.例子
下面程序,編輯運(yùn)行,結(jié)果為()
public class Test{
public void main(String[] args){
System.out.println("Hello world");
}
}結(jié)果:編譯無錯(cuò)誤,但運(yùn)行時(shí)產(chǎn)生異常。
編譯錯(cuò)誤和運(yùn)行錯(cuò)誤的區(qū)別
編譯期
在程序的字節(jié)碼文件中產(chǎn)生一些控制程序運(yùn)行時(shí)分配內(nèi)存的指令, 僅僅是知道內(nèi)存分配的大小以及存放的位置, 不做具體的分配操作
運(yùn)行期
是對內(nèi)存的真正的分配, 確定程序分配內(nèi)存的大小, 以及這些變量該存放內(nèi)存的位置
常見的錯(cuò)誤
編譯錯(cuò)誤一般指語法錯(cuò)誤或者很明顯的邏輯錯(cuò)誤, 如 : 缺少分號, 少寫括號, 關(guān)鍵字書寫錯(cuò)誤等
運(yùn)行錯(cuò)誤是在沒有編譯錯(cuò)誤的基礎(chǔ)上運(yùn)行后產(chǎn)生的邏輯錯(cuò)誤, 如 : 空指針異常, 除數(shù)為0 , 越界訪問等
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的強(qiáng)制類型轉(zhuǎn)換 大數(shù)轉(zhuǎn)小數(shù)
這里主要討論一下大數(shù)轉(zhuǎn)小數(shù),比如int類型轉(zhuǎn)short類型。小數(shù)轉(zhuǎn)大數(shù),如short 轉(zhuǎn) int不做討論,需要的朋友可以參考下2020-02-02
使用Idea maven創(chuàng)建Spring項(xiàng)目過程圖解
這篇文章主要介紹了使用Idea maven創(chuàng)建Spring項(xiàng)目過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Java位運(yùn)算和邏輯運(yùn)算的區(qū)別實(shí)例
Java位運(yùn)算和邏輯運(yùn)算的區(qū)別實(shí)例,請參考下面代碼,希望對你有所幫助2013-02-02
Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式
這篇文章主要介紹了Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
如何自定義Mybatis-Plus分布式ID生成器(解決ID長度超過JavaScript整數(shù)安全范圍問題)
MyBatis-Plus默認(rèn)生成的是 64bit 長整型,而 JS 的 Number 類型精度最高只有 53bit,這篇文章主要介紹了如何自定義Mybatis-Plus分布式ID生成器(解決ID長度超過JavaScript整數(shù)安全范圍問題),需要的朋友可以參考下2024-08-08
Nacos客戶端配置中心緩存動態(tài)更新實(shí)現(xiàn)源碼
這篇文章主要為大家介紹了Nacos客戶端配置中心緩存動態(tài)更新實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-03-03

