第 2 篇:Java 入門實戰(JDK8 版)—— 編寫第一個 Java 程序,理解基礎運行邏輯

用 IntelliJ IDEA 寫第一個 Java 8 程序:Hello World 實操指南

作為 Java 初學者,“Hello World” 是你接觸這門語言的第一個里程碑。本文會聚焦 Java 8(經典 LTS 版本,企業級開發常用)IntelliJ IDEA(當前主流 Java 開發工具),用簡潔連貫的步驟帶你完成從環境準備到程序運行的全過程,避免零散的列表,讓操作流程更易跟隨。

一、先做好準備:安裝 Java 8 和 IntelliJ IDEA

在寫代碼前,需要先搭好開發環境——核心是 Java 8 開發工具包(JDK 8)和 IntelliJ IDEA,兩者都要選適配當前系統的版本,避免后續兼容問題。

首先裝 JDK 8:Java 8 作為長期支持版本,至今仍是很多企業項目的首選,推薦從 Oracle 官網或 Adoptium(開源免費,適配性好)下載。注意區分系統:Windows 選 “Windows x64 Installer”,macOS 選 “macOS x64 .dmg”,安裝時建議選無中文、無空格的路徑(比如 Windows 裝在 D:\Java\jdk1.8.0_301,macOS 會自動默認路徑),裝完后可以打開命令行(Windows 用 cmd,macOS 用終端),輸入 java -version 驗證,能顯示 “java version “1.8.0_xxx”” 就說明 JDK 8 裝好了。

接著裝 IntelliJ IDEA:選社區版(Community Edition)就行,免費且足夠滿足新手需求,從 JetBrains 官網下載對應系統版本。安裝時注意勾選“創建桌面快捷方式”(方便后續打開),Windows 還可以勾選“關聯 .java 文件”,macOS 拖到應用程序文件夾即可。首次打開 IDE 時,按提示完成初始配置(比如選主題、安裝必要插件),不用額外裝 Java 插件——IDEA 社區版默認自帶 Java 開發支持。

二、用 IntelliJ IDEA 創建 Java 8 項目

在這里插入圖片描述

打開 IntelliJ IDEA 后,不用急著寫代碼,先創建一個標準的 Java 項目,讓 IDE 幫你管理文件結構,避免手動建文件夾的麻煩。

首次打開 IDE 會看到“Welcome to IntelliJ IDEA”界面,點擊“Create New Project”;如果已經打開過其他項目,就從頂部菜單欄選“File -> New -> Project”。接下來在彈出的項目配置窗口里,左邊選“Java”,右邊會提示“Project SDK”——這里要選我們剛裝的 Java 8,要是下拉列表里沒有,就點“Add SDK -> JDK”,然后找到 JDK 8 的安裝目錄(比如 Windows 下的 D:\Java\jdk1.8.0_301,macOS 下的 /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home),選中后點擊“OK”。

項目 SDK 配置好后,點擊“Next”,不用勾選“Create project from template”(新手先從空白項目開始,更清楚文件結構),再點“Next”。然后設置項目名稱,建議叫“HelloWorldApp”(見名知意),項目路徑可以默認,也可以自己選(同樣避免中文和空格),最后點擊“Finish”。

等待 IDE 加載項目,加載完成后,你會看到左側“Project”面板里有“HelloWorldApp”項目,下面有“src”文件夾——這是用來放 Java 源代碼的地方,所有 .java 文件都要放在這里面。

三、寫代碼:在 IDEA 里創建 HelloWorld 類

項目建好后,接下來創建第一個 Java 類,也就是寫代碼的地方。在左側“Project”面板里,右鍵點擊“src”文件夾,選“New -> Java Class”,彈出的輸入框里填類名“HelloWorld”——注意 Java 是大小寫敏感的,類名首字母要大寫,而且這個名字會和后續的 .java 文件名一致,不能亂填。

點擊“OK”后,IDEA 會自動生成一個空白的類文件,里面只有類的定義代碼。接下來把以下代碼復制進去,或者手動輸入(建議手動輸,熟悉語法):

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!"); // 輸出問候語}
}

輸入的時候可以留意 IDEA 的小技巧:比如輸入“main”后,按 Tab 鍵,IDE 會自動補全 main 方法的完整代碼(public static void main(String[] args) {}),不用手動敲全;輸入“sout”后按 Tab 鍵,會自動補全 System.out.println(),只需要在括號里填要輸出的內容就行——這些功能能幫你減少拼寫錯誤,提高效率。

代碼輸完后,記得按 Ctrl+S(Windows)或 Command+S(macOS)保存文件,不過 IDEA 也會自動保存,不用擔心代碼丟失。

四、運行程序:看 Hello World 輸出結果

代碼寫好后,就可以運行程序了,IDEA 會幫你自動完成編譯(把 .java 文件轉成 JVM 能識別的 .class 字節碼文件),不用手動敲編譯命令。

運行的方法很簡單:在代碼編輯區的任意位置右鍵點擊,選“Run ‘HelloWorld.main()’”;或者看類名“HelloWorld”旁邊,會有一個綠色的小三角圖標,點擊這個圖標也能運行;還有一種方式是用快捷鍵,Windows 按 Shift+F10,macOS 按 Control+R。

點擊運行后,IDE 底部會彈出“Run”面板(也就是控制臺),稍等一下,就能看到里面輸出了“Hello World!”——這說明你的第一個 Java 8 程序成功運行了!如果沒看到輸出,先檢查代碼有沒有拼寫錯誤(比如少了分號、括號不匹配),再看看項目的 SDK 是不是選的 Java 8,一般新手遇到的問題大多是這兩類。

五、額外:用命令行驗證(了解底層流程)

如果想更清楚 Java 程序的編譯和運行邏輯,也可以用命令行手動操作,這能幫你理解 IDEA 背后的工作原理。

首先找到項目的源代碼路徑:在 IDEA 里,右鍵點擊“HelloWorld.java”文件,選“Copy Path -> Absolute Path”,復制后打開命令行,用“cd”命令導航到這個路徑(比如 Windows 輸入 cd D:\HelloWorldApp\src,macOS 輸入 cd /Users/你的用戶名/HelloWorldApp/src)。

然后輸入 javac HelloWorld.java 編譯代碼——這一步會生成 HelloWorld.class 文件(字節碼文件),如果命令行沒有報錯,就說明編譯成功;接著輸入 java HelloWorld 運行程序,同樣能看到“Hello World!”的輸出。

這里要注意:命令行運行時,java 命令后面跟的是類名(HelloWorld),不是文件名(HelloWorld.java),而且不能加 .class 后綴,這是新手常犯的錯誤;另外要確保命令行里的 JDK 是 Java 8,輸入 java -version 確認一下,要是顯示其他版本,就檢查環境變量是不是配置了 Java 8 的路徑。

六、基礎常見問題:新手容易踩的坑

剛開始寫程序時,難免會遇到問題,這里先整理幾個高頻基礎問題,幫你快速排查。

如果 IDEA 提示“Project SDK is not defined”,說明項目沒關聯 JDK 8,解決方法是從頂部菜單欄選“File -> Project Structure”,在“Project”選項卡下的“Project SDK”里重新選擇 Java 8 的路徑,點擊“OK”即可。

如果運行后控制臺提示“Error: Could not find or load main class HelloWorld”,大概率是類名和文件名不一致(比如類名是 HelloWorld,文件名卻寫成 helloWorld.java),或者命令行導航的路徑不對——先檢查文件名是否和類名完全一致(包括大小寫),再確認命令行當前路徑是不是 src 文件夾下。

如果編譯時提示“illegal character: \ufffd”,基本是代碼里混入了中文符號(比如用了中文分號、中文括號),解決方法是把代碼里的所有符號換成英文的,IDEA 里會用紅色波浪線標出錯誤位置,點擊波浪線還會有修復提示。

七、深入理解代碼:Hello World 的核心組成

雖然 Hello World 程序簡單,但每個部分都有其作用,搞懂這些能幫你打好 Java 基礎,后續學習更輕松。

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!"); // 輸出問候語}
}

首先是源代碼注釋,注釋會被編譯器忽略,但能幫其他程序員理解代碼,Java 支持三種注釋類型:第一種是“/* 文本 /”,這種注釋可以跨多行,比如包裹一段代碼的說明;第二種是“/* 文檔注釋 */”,也叫 doc 注釋,除了注釋功能,還能被 javadoc 工具識別,自動生成 HTML 格式的文檔(比如生成類的說明手冊);第三種是“// 單行注釋”,從//開始到行尾的內容都會被忽略,適合寫簡短的代碼說明,比如我們代碼里的“// 輸出問候語”。

然后是類定義,代碼里的 public class HelloWorld 就是類的定義——Java 是面向對象的語言,所有代碼都必須放在類里。“public”是訪問修飾符,表示這個類是公開的,能被其他類訪問;“class”是關鍵字,用來聲明類;“HelloWorld”是類名,必須和文件名完全一致(包括大小寫),這是 Java 的強制要求,一旦不一致就會編譯報錯。類的所有代碼都放在后面的大括號 {} 里,這是 Java 代碼塊的基本格式。

最后是main 方法public static void main(String[] args) 是整個程序的入口——不管程序多復雜,JVM 都會從 main 方法開始執行。“public static”是修飾符,“public”保證 main 方法能被 JVM 訪問,“static”表示不用創建類的對象就能直接調用;“void”表示方法沒有返回值;“main”是方法名,這是 JVM 規定的入口方法名,不能隨便改;“String[] args”是方法的參數,是一個字符串數組,用來接收命令行傳入的參數(比如運行程序時輸入 java HelloWorld arg1,args 數組里就會有“arg1”這個元素),新手暫時用不到這個參數,但必須保留,否則 JVM 找不到入口。

System.out.println("Hello World!") 是輸出語句,“System”是 Java 核心庫中的類,“out”是 System 類的靜態屬性,表示標準輸出(也就是控制臺),“println”是 out 對象的方法,作用是把括號里的內容打印到控制臺并換行——這行代碼就是我們能看到“Hello World!”輸出的關鍵。

八、問題與練習:鞏固 Hello World 知識

理解代碼后,可以通過幾個問題和練習來檢驗學習效果,加深對基礎的掌握。

問題1:當你編譯 Java 程序時,編譯器會把人類可讀的 .java 源文件轉換成 JVM 能理解的平臺無關代碼,這種代碼叫什么?答案其實前面提到過,就是字節碼,對應的文件后綴是 .class,這也是 Java 能“一次編寫,到處運行”的核心。

問題2:以下哪項不是有效的注釋?選項分別是 a. /** 注釋 /、b. / 注釋 /、c. / 注釋 、d. // 注釋 。這里要注意,/* 和 / 是成對出現的,選項 c 只有開頭的 / 沒有結尾的 */,所以是無效的,編譯器會報錯。

問題3:如果運行時看到“Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorldApp.java”,首先該檢查什么?這個錯誤說明 JVM 找不到要運行的類,大概率是你在運行時誤寫了文件名(比如輸入 java HelloWorldApp.java),正確的應該是輸入類名 java HelloWorldApp,所以首先要檢查運行命令里是不是多寫了 .java 后綴。

問題4:main 方法的正確簽名是什么?正確的簽名就是 public static void main(String[] args),這里要注意幾個點:main 方法名不能錯,參數必須是 String 數組(可以寫成 String args[],但習慣上用 String[] args),修飾符 public 和 static 的順序可以換,但一般按 public static 的順序寫。

問題5:聲明 main 方法時,哪個修飾符必須放在前面,是 public 還是 static?其實兩個修飾符都必須有,但從 JVM 訪問的角度看,public 是必須的——如果少了 public,JVM 無法訪問 main 方法,會提示“找不到 main 方法”;而少了 static,JVM 無法直接調用,也會報錯,所以兩個都不能少,但問題問的是“必須放在前面”,其實更核心的是 public,因為它決定了訪問權限。

問題6:main 方法定義了哪些參數?就是一個 String 類型的數組,參數名通常是 args(也可以叫其他名字,比如 argv),用來接收命令行傳入的參數。

再來看練習1:把 HelloWorldApp.java 程序修改為顯示“Hola Mundo!”而不是“Hello World!”。其實很簡單,只需要把輸出語句里的字符串改成“Hola Mundo!”,也就是把 System.out.println("Hello World!") 改成 System.out.println("Hola Mundo!"),然后重新運行,就能看到新的輸出。

練習2:有一個修改版的程序 HelloWorldApp2.java,運行時有錯誤,該怎么修復?常見的錯誤可能有幾種:比如類名寫成了 HelloWorldApp2,但文件名是 HelloWorldApp.java,導致類名和文件名不一致;或者少了 main 方法的某個修飾符(比如漏了 static);又或者輸出語句里少了分號——只需要對照正確的 HelloWorld 代碼,檢查這幾處,把不一致的地方改過來,程序就能正常編譯運行了。

九、更全面的常見問題:編譯器與運行時錯誤

除了基礎問題,編譯和運行時還可能遇到其他錯誤,這里整理更全面的情況,幫你應對更多場景。

編譯器問題(不同系統常見錯誤)

在 Windows 系統上,最常見的錯誤是“‘javac’ is not recognized as an internal or external command”,這說明 Windows 找不到 javac 編譯器。如果 JDK 安裝路徑是 C:\jdk1.8.0,可以暫時在命令行輸入 C:\jdk1.8.0\bin\javac HelloWorldApp.java 來編譯,但每次都這樣太麻煩,最好的解決方法是配置環境變量,把 JDK 的 bin 目錄(比如 C:\jdk1.8.0\bin)添加到系統的 PATH 變量里,具體步驟可以參考 JDK 8 的安裝說明,配置后重啟命令行就能直接用 javac 命令了。

還有一個錯誤是“Class names, ‘HelloWorldApp’, are only accepted if annotation processing is explicitly requested”,這是因為編譯時忘了加 .java 后綴,比如輸入 javac HelloWorldApp 而不是 javac HelloWorldApp.java,只要加上 .java 后綴就能解決。

在 UNIX 或 macOS 系統上,類似的錯誤是“javac: Command not found”,解決方法和 Windows 類似,暫時可以用 /usr/local/jdk1.8.0/bin/javac HelloWorldApp.java 編譯,長期解決則需要把 JDK 的 bin 目錄添加到 PATH 變量里,具體步驟根據使用的 shell 不同略有差異,比如 bash shell 可以編輯 ~/.bashrc 文件,添加 export PATH=$PATH:/usr/local/jdk1.8.0/bin,然后執行 source ~/.bashrc 生效。

另外,不管什么系統,都可能遇到語法錯誤,比如少了分號、括號不匹配等,編譯器會提示錯誤位置(比如“Testing.java:8: error: ‘;’ expected”),只要根據提示找到對應的行,修復語法問題,再重新編譯就行。

運行時問題(全系統常見錯誤)

最常見的運行時錯誤是“Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorldApp”,這說明 JVM 找不到 .class 文件。首先要檢查當前目錄是不是 .class 文件所在的目錄(比如 src 文件夾),如果不是,用 cd 命令切換過去;如果還是不行,可以嘗試清除 CLASSPATH 變量——Windows 輸入 set CLASSPATH=,UNIX 或 macOS 輸入 unset CLASSPATH,然后再重新運行,如果能成功,就需要重新配置 CLASSPATH 變量,確保 JVM 能找到類文件。

還有一個新手常犯的錯誤是“Could not find or load main class HelloWorldApp.class”,這是因為運行時誤把 .class 文件名當成了類名,比如輸入 java HelloWorldApp.class,正確的應該是輸入類名 java HelloWorldApp,去掉 .class 后綴就行。

如果看到“Exception in thread “main” java.lang.NoSuchMethodError: main”,說明類里沒有正確的 main 方法,可能是方法名寫錯了(比如寫成了 Main),或者少了修飾符(比如漏了 public 或 static),又或者參數不對(比如寫成了 String args 而不是 String[] args),只要對照正確的 main 方法簽名修改,就能解決。

十、總結:下一步該學什么

完成第一個 Hello World 并解決常見問題后,你已經邁過了 Java 學習的第一道坎。接下來可以試著做一些小修改,比如在輸出語句后再加一行 System.out.println("Java 8 入門成功!"),運行后看看控制臺會不會顯示兩行內容;或者嘗試用不同的注釋類型給代碼加說明,熟悉注釋的用法。

等你對 Hello World 相關的基礎操作熟練后,就可以開始學習 Java 8 的核心語法了——比如變量的定義(怎么聲明整數、字符串變量)、基本數據類型(int、String、boolean 等)、運算符(加減乘除、邏輯運算),這些是寫復雜程序的基礎。而 IntelliJ IDEA 的更多功能,比如代碼調試(設置斷點、查看變量值)、代碼重構(重命名類或方法),可以在后續學習中慢慢探索,不用一開始就掌握所有操作。

記住,Java 8 作為經典的 LTS 版本,不僅資料豐富,而且至今仍是很多企業項目的首選,打好這個版本的基礎,后續學習 Java 17、Java 21 等新版本時,會更容易理解版本間的差異和升級點,讓整個學習過程更順暢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98966.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【GPT入門】第67課 多模態模型實踐: 本地部署文生視頻模型和圖片推理模型

【GPT入門】第67課 多模態模型實踐: 本地部署文生視頻模型和圖片推理模型1. 文生視頻模型CogVideoX-5b 本地部署1.1 模型介紹1.2 環境安裝1.3 模型下載1.4 測試2.ollama部署圖片推理模型 llama3.2-vision2.1 模型介紹2.2 安裝ollama2.3 下載模型2.4 測試模型2.5 測試…

C++初階(6)類和對象(下)

1. 再談構造函數(構造函數的2個深入使用技巧) 1.1 構造函數體賦值 在創建對象時,編譯器通過調用構造函數,給對象中各個成員變量一個合適的初始值。 雖然上述構造函數調用之后,對象中已經有了一個初始值,…

容器文件描述符熱遷移在云服務器高可用架構的實施標準

在云計算環境中,容器文件描述符熱遷移技術正成為保障業務連續性的關鍵解決方案。本文將深入解析該技術在云服務器高可用架構中的實施標準,涵蓋技術原理、實現路徑、性能優化等核心維度,為構建穩定可靠的容器化基礎設施提供系統化指導。 容器文…

毫米波雷達液位計如何遠程監控水位?

引言毫米波雷達液位計作為一種高精度、非接觸式的水位監測設備,正逐漸成為智慧水務、環境監測等領域的關鍵工具。其通過先進的調頻連續波(FMCW)技術,實現5mm的測量精度,并支持多種遠程通信方式,使用戶能夠實…

關于 C++ 編程語言常見問題及技術要點的說明

關于 C 編程語言常見問題及技術要點的說明C 作為一門兼具高效性與靈活性的靜態編譯型編程語言,自 1985 年正式發布以來,始終在系統開發、游戲引擎、嵌入式設備、高性能計算等領域占據核心地位。隨著 C 標準(如 C11、C17、C20)的持…

【Qt QSS樣式設置】

Qt中的QSS樣式設置流程 Qt Style Sheets (QSS) 是Qt框架中用于自定義控件外觀的樣式表語言,其語法類似于CSS。以下是QSS的設置流程和示例。 QSS設置流程 1. 創建QSS樣式表文件或字符串 首先,需要創建QSS樣式表,可以是一個單獨的.qss文件&…

使用 Apollo TransformWrapper 生成相機到各坐標系的變換矩陣

使用 Apollo TransformWrapper 生成相機到各坐標系的變換矩陣一、背景二、原理1、什么是變換矩陣?2、為什么需要變換矩陣?3、Apollo 中的坐標系4、Apollo TransformWrapper三、操作步驟1. 設置車輛參數2. 啟動靜態變換發布3. 查看變換信息4. 播放記錄數據…

硬件(十)IMX6ULL 中斷與時鐘配置

一、OCP 原則(開閉原則)對代碼擴展是開放的,允許通過新增代碼來擴展功能;對代碼的修改是關閉的,盡量避免直接修改已有穩定運行的代碼,以此保障代碼的穩定性與可維護性。二、中斷處理(一&#xf…

打工人日報#20250913

打工人日報#20250913 周六,回杭州了,這邊居然下雨。 閱讀 《小米創業思考》 第七章 技術為本 其中的技術介紹算是比較詳細的,架構也很清晰,有一種對自己家產品如數家珍的感覺,對于架構也是經常思考的感覺感恩 和namwei…

【面試題】RAG核心痛點

1. 文檔切分粒度不好把控,既擔心噪聲太多又擔心語義信息丟失 這是一個經典難題。切分粒度過大,單個chunk包含過多無關信息(噪聲),會干擾LLM理解核心內容;切分過小,則可能割裂句子或段落的完整語…

網絡安全與iptables防火墻配置

iptables基本概念iptables是Linux系統中強大的防火墻工具,它工作在用戶空間,通過命令行界面與內核空間的netfilter框架交互,實現數據包過濾、網絡地址轉換(NAT)等功能。Web服務器防火墻配置實例以下是針對Web服務器的iptables配置步驟&#x…

qt中給QListWidget添加上下文菜單(快捷菜單)

步驟 添加customContextMenuRequested信號的槽函數,添加后,在QListWidget上單擊右鍵,無法響應,還必須執行下面操作;設置QListWidget上下文菜單策略為Qt::CustomContextMenu 如下:

一款好看的jQuery前端框架-HisUI

HisUI:一款基于EasyUI的前端組件類庫,讓web開發更迅速、簡單。 HisUI官網文檔

【Docker】P3 入門指南:運維與開發雙重視角

目錄Docker入門:運維與開發運維視角Docker 架構概述Docker 鏡像鏡像概念理解查看和管理鏡像拉取鏡像鏡像標識容器管理啟動容器容器內操作容器的后臺運行多容器管理重新進入運行中的容器容器生命周期管理開發視角容器化思維示例:基于 Nginx 鏡像構建簡單 …

第六屆大數據、人工智能與物聯網工程國際會議(ICBAIE 2025)

重要信息 時間:2025年10月17-19日 地點:中國上海 官網:www.icbaie.net 征稿主題 1. 大數據與云計算 2. 人工智能技術與應用 3. 機器人科學與工程 4. 物聯網與傳感器技術 5. 其他 大數據、人工智能與物聯網 引言 在數字化轉型的時代…

Docker存儲卷(Volume)核心概念、類型與操作指南

文章目錄一、存儲卷概念二、存儲卷分類2.1 管理卷2.2 綁定數據卷2.3 臨時數據卷三、MySQL災難恢復四、存儲卷的局限性一、存儲卷概念 什么是存儲卷? ??Docker 存儲卷 是 Docker 容器中用于持久化存儲數據的獨立文件系統區域。它獨立于容器的聯合文件系統&#xf…

Electron 原生模塊集成:使用 N-API

引言:原生模塊集成在 Electron 開發中的 N-API 核心作用與必要性 在 Electron 框架的擴展開發中,原生模塊集成是提升應用性能和功能邊界的關鍵技術,特別是使用 N-API(Node-API)編寫和集成 C 原生模塊,更是 …

android組包時會把從maven私服獲取的包下載到本地嗎

Android項目在構建(組包)時,Gradle會自動將從Maven私服(或任何配置的倉庫)獲取的依賴包(AAR、JAR等)下載到本地的Gradle緩存目錄中。 下面詳細解釋這個過程和相關的概念: 詳細過程聲…

【應用筆記】構建具有增強識別、防欺騙和說話人識別功能的高級語音用戶界面--瑞薩電子

Suad Jusuf(Director Product Marketing and Strategy, Renesas AI Center of Excellence):語音用戶界面(VUI)正在徹底改變我們與技術交互的方式,實現免提、無縫的通信。通過整合先進語音命令識別功能&…

DAY 26 函數專題1:函數定義與參數-2025.9.13

DAY 26 函數專題1:函數定義與參數 知識點回顧: 函數的定義變量作用域:局部變量和全局變量函數的參數類型:位置參數、默認參數、不定參數傳遞參數的手段:關鍵詞參數傳遞參數的順序:同時出現三種參數類型時…