05. 【Java教程】第一個 Java 程序

本節我們將以Windows操作系統為例,編寫并執行第一個Java程序。在這之前,請確保你的操作系統上已經安裝了JDK

1. 編譯程序

大家可能有個疑問,為什么需要編譯程序呢?計算機不能直接執行我們編寫的源代碼嗎?

這是由于計算機只能識別由0和1組成的二進制代碼。需要通過編譯將源代碼轉換為計算機認識的二進制代碼。

1.1 Java 中的編譯

在 Java 中,程序不是直接被編譯為可執行文件,而是被編譯為字節碼文件,?JVM(Java虛擬機)在運行時執行字節碼文件。當我們使用?javac?編譯器時,Java 源代碼文件被編譯為字節碼文件,字節碼文件以擴展名?.class?的形式保存在磁盤上。當程序運行時,字節碼文件將被轉換為機器代碼,并在內存中執行。

總的來說,Java 源代碼需要被“轉換”兩次才能被計算機執行:

  1. Java 源代碼被編譯為字節碼:由 javac 前端編譯器完成;
  2. 字節碼被編譯為機器碼:由 JVM 的執行引擎完成。

下圖描述了一個Java程序從編寫編譯,再到執行的步驟:

1.2 快速執行一個程序

1.2.1 準備工作

為了確保我們人生中第一個 Java 程序能夠順利執行,請首先確認你已經完成了下面兩件事情:

  1. 已經在你的電腦上成功安裝?JDK
  2. 有一個文本編輯器。(如 Windows 的記事本,Unix 的 vim)。
1.2.2 編寫源代碼

新建一個文本,輸入如下內容,將其命名為?HelloWorld.java并保存

實例演示

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");}
}

Tips

  • 文件名必須與類名同名(類名就是上面第一行代碼中class后面的HelloWorld),并且擴展名為?.java,文件名和類名都區分大小寫,所以請確保文件名和類名大小寫保持一致;
  • 類的命名約定以大寫字母開頭;
  • 上述代碼中的所有符號,請使用英文半角;
  • 別忽略了代碼第三行結尾的分號;

下面為實操中的截圖。

打開記事本,輸入源代碼:

點擊文件 -> 保存,將文件保存到磁盤(此處保存在桌面上),注意:這里要將文件名命名為HelloWorld.java,保存類型選擇所有文件,編碼選擇UTF-8

1.2.3 編譯后執行

現在,打開你常用的命令行工具。(如 Windows 上的命令提示符、MacOS 上的終端),并進入你剛剛保存 Java 源代碼的目錄。

Windows搜索欄中輸入cmd即可打開:

使用cd命令,進入到我們剛剛保存源代碼的目錄(即進入到桌面目錄cd Desktop),使用dir命令,查看目錄下內容:

使用javac命令編譯源代碼:

執行編譯命令后,你會發現同一目錄下會生成一個HelloWorld.class文件,這個HelloWorld.class就是我們說的字節碼文件。接下來就是通過?JVM?執行字節碼文件了,輸入下面的命令:

java HelloWorld

如果一切正常,你會看到屏幕上輸出如下內容:

祝賀你!成功執行了第一個 Java 程序!

Tips

  • javac?是編譯器,而?java?是虛擬機,先使用?javac?編譯器編譯源代碼,再使用java虛擬機執行字節碼文件。這就是我們上面提到的 java 源代碼被轉換兩次到執行的過程。
  • java?命令后面的參數是類名。換句話說,我們只需要給虛擬機傳遞類名作為參數即可,虛擬機會自動查找對應的以.class為擴展名的文件并且執行。

2. 理解程序

我們現在對上面的?HelloWorld.java?代碼進行解析:

public class HelloWorld {...
}

這段代碼表示我們定義了一個公開類,類名為?HelloWorld,按照約定類名首字母要大寫。

public?表示這個類是公開的(至于什么是公開的,我們后面再講),class顧名思義,就是,?public?和?class都是 Java 中的關鍵字,必須小寫。 花括號{}?中間為類的定義。

下面我們來看下花括號中間的?main()方法代碼:

    public static void main(String[] args) {...}

這段代碼表示我們定義了一個入口方法,注意:入口方法是 Java 程序執行的起點。

public?和?static分別表示方法是公開的、靜態的,void是方法的返回類型,main后面的括號()?用來將方法的參數括起來,String[]是參數的類型,args是參數的名稱。
當然,剛剛對于代碼的解釋略顯生澀,作為初學者無需深究每一項的含義。但有一個點請務必牢記:Java 規定,某個類定義的public static void main(String[] args)是Java程序的固定入口方法。

在方法內部,有一行代碼:

        System.out.println("Hello World!");

這行代碼的意義就是將Hello World這一串字符打印在屏幕上。你可以嘗試修改這塊內容,將代碼中的Hello World!,替換為其他內容,例如:

實例演示

public class HelloWorld {public static void main(String[] args) {System.out.println("我愛編程!");}
}

保存源代碼,打開命令行,重新編譯執行,屏幕上輸出的內容將會被成功替換。

3. 小結

本小節我們一起完成了第一個 Java 程序的執行,在這個過程中,我們了解了編譯相關的知識,知道了使用?javac命令,可以將一個.java擴展名的源代碼文件編譯成.class擴展名的字節碼文件,使用?java?命令,可以執行字節碼文件。我們也對程序的基礎語法有了大致的了解。如果你對程序的理解還有困惑,也不必擔心,在后面的章節中,我們將具體學習 Java 的基礎語法,隨著知識的累積,你也將更加游刃有余地閱讀、編寫程序。

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

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

相關文章

指針由淺入深

1.變量與地址 2.指針與指針變量 3.直接訪問和間接訪問 4.空指針與野指針 5.空類型 6.定義與初始化的書寫規則 7.指針運算 8.指針與數組 指針與一維數組 指針與二維數組 指針與字符數組 9.const與指針 10.指針數組和數組指針 11.多級指針 #include<stdio.h> #include<…

CPU利用率使用教程

本文主要參考&#xff1a; 一文讓你學到 nmon最詳盡的用法 Linux性能監控命令_nmon 安裝與使用 如果你是在Ubuntu上安裝nmon&#xff0c;使用&#xff1a; apt install nmon安裝好后&#xff0c;直接運行 $:nmon #運行如果是后臺抓數據&#xff1a; -f 參數: 生成文件,文件…

python 虛擬環境多種創建方式

【一】說明介紹 &#xff08;1&#xff09;什么是虛擬環境 在Python中&#xff0c;虛擬環境&#xff08;Virtual Environment&#xff09;是一個獨立的、隔離的Python運行環境&#xff0c;它擁有自己的Python解釋器、第三方庫和應用程序。通過創建虛擬環境&#xff0c;可以確…

【刷題(2)】矩陣

一、矩陣問題基礎 遍歷&#xff1a; for i in range(len(matrix[0])): for j in range(len(matrix): while 倒序遍歷&#xff1a; for i in range(right,left,-1) 臨時存儲&#xff1a;temp w,h:len(matrix[0])-1 len(matrix)-1 left,right,top,bottom:0 len(matrix[0])-1 0 l…

Cesium 3DTileset Style 原理簡析

Cesium 3DTileset Style 原理簡析 應用層會看到這樣的使用。那么原理是什么, 為啥寫 height, 除了這個還有啥? const tileset await Cesium.Cesium3DTileset.fromUrl("../../public/tileset/building/tileset.json"); tileset.style new Cesium.Cesium3DTileSty…

HarmonyOS應用模型Stage基本介紹

文章目錄 <font colorcoral> HarmonyOS應用模型概況<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 寫在后面的話<font colorcoral>Referen…

學校NTP時鐘系統(時間同步系統)方案助力建設智慧校園

學校NTP時鐘系統&#xff08;時間同步系統&#xff09;方案助力建設智慧校園 學校NTP時鐘系統&#xff08;時間同步系統&#xff09;方案助力建設智慧校園 建設智慧校園也意味著校內網絡設備和服務器劇增&#xff0c;如何保障智慧校園內各數字系統時序一致、維穩運行成為一大難…

【八大排序算法】插入排序、希爾排序、選擇排序、堆排序、冒泡排序、快速排序、歸并排序、計數排序

文章目錄 一、排序的相關概念二、排序類型三、排序算法實現插入排序1.直接插入排序2.希爾排序 選擇排序3.簡單選擇排序4.堆排序 交換排序5.冒泡排序6.快速排序遞歸實現非遞歸實現 7.歸并排序遞歸實現非遞歸實現 8.計數排序 四、總結 一、排序的相關概念 排序&#xff1a;根據數…

WebLogic問題集

console登錄后&#xff0c;頁面顯示卡頓 解決方法&#xff1a; 將Java的配置文件JAVA_HOME\jre\lib\securetty\java.security中的 securerandom.sourcefile:/dev/random修改為 securerandom.sourcefile:/dev/./random修改后&#xff0c;重啟WLS即可。

【LAMMPS學習】八、基礎知識(6.5)PyLammps 教程

8. 基礎知識 此部分描述了如何使用 LAMMPS 為用戶和開發人員執行各種任務。術語表頁面還列出了 MD 術語&#xff0c;以及相應 LAMMPS 手冊頁的鏈接。 LAMMPS 源代碼分發的 examples 目錄中包含的示例輸入腳本以及示例腳本頁面上突出顯示的示例輸入腳本還展示了如何設置和運行各…

[JAVASE] 類和對象(二)

目錄 一. 封裝 1.1 面向對象的三大法寶 1.2 封裝的基本定義與實現 二. 包 2.1 包的定義 2.2 包的作用 2.3 包的使用 2.3.1 導入類 2.3.2 導入靜態方法 三. static 關鍵字 (重要) 3.1 static 的使用 (代碼例子) 3.1.1 3.1.2 3.1.3 3.1.4 四. 總結 一. 封裝 1.1 面向對象…

推薦網站(9)pixabay免費可商用的圖片、視頻、插畫、矢量圖、音樂

今天推薦一款可以免費可商用的圖片、視頻、插畫、矢量圖、音樂的資源網站&#xff0c;這里面的所以東西都是免費的&#xff0c;并且可以商用。對那些做視頻剪輯的人來說幫助非常大。它里面的資源非常的豐富&#xff0c;質量也高。 比如搜索下雨 鏈接直達&#xff1a;https://pi…

遇到Docker容器無法上網的問題時如何排查

當遇到Docker容器無法上網的問題時&#xff0c;可以通過以下步驟排查和解決&#xff1a; 檢查Docker容器的網絡模式&#xff1a; 確認容器的網絡模式是否符合您的需求&#xff0c;使用 docker inspect <container_id> 查看網絡配置。 檢查Docker守護進程和容器的日志&am…

如何安裝在系統中安裝make命令

文章目錄 WindowsMacUbuntuCentOS/Red Hat make是系統比較基礎的命令&#xff0c;一般會自己攜帶&#xff0c;如果沒有就手動安裝一下吧。 Windows 從官網下載 make.exe Make for Windows 官網首頁&#xff1a;https://www.gnu.org/software/make/ 下載地址&#xff1a;htt…

IT行業的革新力量:技術進步與未來展望

在當今時代&#xff0c;信息技術&#xff08;IT&#xff09;行業無疑是全球經濟的重要推動力之一。隨著數字化轉型的不斷深入&#xff0c;IT行業的邊界正在擴大&#xff0c;它不僅包括傳統的軟硬件開發、網絡建設和運維服務&#xff0c;還涵蓋了云計算、大數據、人工智能&#…

我希望未來十年,Java可以變成這樣的

ava&#xff0c;這位編程界的常青樹&#xff0c;自1995年問世以來&#xff0c;一直是全球開發者的寵兒。隨著技術的飛速發展&#xff0c;Java也在持續地自我革新。接下來&#xff0c;讓我們來聊聊&#xff0c;未來十年Java可能會有哪些令人興奮的變化。&#xff08;最重要的一點…

常用的啟發式算法:探索問題解決的智慧之道

啟發式算法是一種通過啟發式信息來引導搜索的算法&#xff0c;常用于解決那些在合理時間內難以找到最優解的問題。本文將介紹幾種常用的啟發式算法&#xff0c;包括貪心算法、遺傳算法和模擬退火算法&#xff0c;并提供Java代碼實現及測試&#xff0c;幫助讀者深入理解這些算法…

android設計模式-單例模式

轉&#xff1a;https://www.jianshu.com/p/9c32aea34b6d 單例模式是運用最廣泛的設計模式之一&#xff0c;在應用這個模式時&#xff0c;單例模式的類必須保證只有一個實例存在。多用于整個程序只需要有一個實例&#xff0c;通常很消耗資源的類&#xff0c;比如線程池&#xf…

如何申請免費一年SSL證書

申請免費一年的SSL證書可以通過以下幾個步驟進行&#xff0c;這里以JoySSL為例&#xff0c;因為它是目前提供此類服務的流行平臺之一&#xff0c;同時也提到了寶塔面板中的TrustAsia SSL證書。請根據您的具體需求選擇合適的方式&#xff1a; 申請免費一年SSL證書&#xff1a; …

2024年為什么很多電商商家,都想涌入視頻號,究竟是什么原因?

大家好&#xff0c;我是電商糖果 對電商有了解的朋友&#xff0c;在今年肯定發現一個現象&#xff0c;那就是很多商家對視頻號比較青睞。 視頻號究竟有何魔力&#xff0c;讓越來越多的商家都想要入駐。 其實很簡單&#xff0c;它讓商家看到了市場。 視頻號背后是誰&#xf…