Java 基礎語法
本小節(jié)我們將介紹 Java
語言的基礎語法,包括我們在編寫第一個 Java
程序時已接觸過的類、主方法的概念,以及在編程中給源代碼文件和類起名字的時候應該注意什么,什么樣的名字是可以使用的,什么樣的名字是不可以使用的,還有如何為代碼添加注釋等內(nèi)容。
只有掌握了這些最基礎的知識,才能減少后續(xù)學習中的困擾,避免踩坑。
1. 基本語法
我們在前面完成了第一個 Java
程序,我們現(xiàn)在來回顧一下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
整個程序看似簡單,但包含很多基礎的知識點。下面我們將圍繞這個程序來介紹幾部分內(nèi)容:
- 大小寫敏感
- 類
- 主方法
- 源代碼文件
1.1 大小寫敏感
Java 語言是大小寫敏感的,這個知識點很好理解:所有的命名都區(qū)分大小寫 (文件名、類名、方法名等等)。
例如:HelloWorld
與 helloWorld
是不同的;Hello.java
和 HellO.java
也是不同的。
1.2 類
Java 是純面向?qū)ο蟮木幊陶Z言,因此類 (class) 是一個程序的基本單位。所有的 Java 程序想要運行,都離不開類。
我們可以來看看代碼的第一行:
public class HelloWorld {
其中,public
是一個關鍵字,它屬于訪問控制符,它表示這個類是公開的。關于什么是訪問控制符,在初學階段不必理解。
緊接著的 class
也是一個關鍵字用于聲明類, HelloWorld
是類名,類名的首字母要大寫。如果類名由多個單詞組成,那么每個單詞的首字母都要大寫。例如,我們可以這樣聲明一個表示慕課網(wǎng)學生的類:
public class ImoocStudent {
...
}
1.3 主方法
什么是主方法呢?請觀察示例代碼的 class
內(nèi)部(指的是類名 HelloWorld
后面用大括號 {}
包含的內(nèi)容),這個方法被稱為主方法。每個類只能擁有一個主方法。
需要特別注意的是:所有的 Java 程序都從主方法開始執(zhí)行。 以下的寫法是固定的,所以你暫時無需深究:
public static void main(String[] args) {
...
}
而在主方法內(nèi)部(指的是 main()
后面一對大括號中間包含的內(nèi)容)我們可以定義一些指令,例如:
System.out.println("Hello World!");
我們稱這個指令為輸出語句,它的作用是向屏幕輸出 Hello World!
。輸出語句在后面會經(jīng)常用到。
我們也可以在主方法內(nèi)部多次調(diào)用輸出語句,以輸出多條內(nèi)容:
public class ImoocStudent {
public static void main(String[] args) {
System.out.println("第一行輸出:慕課網(wǎng)學生");
System.out.println("第二行輸出:快來慕課學編程");
}
}
另外補充一點,類的內(nèi)部不僅可以包含一個主方法,也可以包含多個方法。在學習方法的概念之前,我們將主要在主方法中編寫示例代碼。
1.4 源代碼文件
既然源代碼需要提供給計算機執(zhí)行,我們就要將源代碼以文件的形式保存在計算機的磁盤上。
需要注意的是:源代碼文件的命名必須與類名相同,且后綴名為.java
。例如:HelloWorld
類對應的源代碼文件名應該為 HelloWorld.java
,而 ImmocStudent.java
源代碼文件的對應類名為 ImmocStudent
。
2. Java 標識符
2.1 概念
在計算機編程語言中,標識符是開發(fā)者編程時使用的名字,用于給變量、常量、函數(shù)、語句塊等命名,以建立起名稱與使用之間的關系。標識符通常由字母和數(shù)字以及其它字符構成。
在 Java 中,標識符通常用來給類、對象、變量、方法、接口、自定義數(shù)據(jù)類型命名。
2.2 命名規(guī)范
標識符都以字母(A-Z 或者 a-z),美元符號($)或下劃線(_)開始;首字母后可以是字母、數(shù)字、下劃線的任意組合;正如我們前面所提到的,標識符是大小寫敏感的;需要特別注意的是,Java 中的關鍵字(本節(jié)最后將會介紹)不能被用作標識符。
以下是合法的標識符命名實例:
-
$name
-
_World
-
Imooc
-
imooc1
以下不合法的標識符命名實例:
- ¥color
- 12name
- *abc
- final
3. Java 注釋和空行
3.1 概念
3.1.1 注釋
注釋是一種便于給人閱讀程序的文本,它不會被編譯器解析。養(yǎng)成多些注釋的習慣,不但有助于自己理解程序,也有助于別人更好地理解自己的程序。在團隊協(xié)作的項目中,代碼注釋更加重要,代碼的研發(fā)人員通過編寫通俗易懂的注釋,可以極大地降低協(xié)作成員之間溝通成本。
下圖灰色部分為 Java 源碼中的注釋:

3.1.2 空行
空行就是空白行,與注釋一樣,同樣不會被編譯器解析。
適當?shù)厥褂每招?,可以讓代碼的結(jié)構看起來更好看,例如,下面程序中第 2 行、第 5 行和第 8 行都是空行:
1 class HelloImooc {
2
3 public static void main(String[] args) {
4 System.out.println("你好慕課網(wǎng)");
5
6 System.out.println("Hello, Imooc!");
7 }
8
9}
3.2 注釋的分類
Java 語言提供了三種類別的注釋:
- 單行注釋
- 多行注釋
- 文檔注釋
3.2.1 單行注釋
單行注釋用于注釋一行文本,它以雙斜線開始,后面跟上要注釋的內(nèi)容,其寫法為:
// 被注釋的內(nèi)容
在 Java 代碼中,它是這樣的:
public class HelloImooc {
// 定義入口方法
public static void main(String[] args) {
// 打印輸出:你好慕課網(wǎng)
System.out.println("你好慕課網(wǎng)");
}
}
3.2.2 多行注釋
多行注釋用于注釋多行文本,它以 /*
開頭,以 */
結(jié)尾,其寫法為:
/*
被注釋的第一行內(nèi)容
被注釋的第二行內(nèi)容
被注釋的第三行內(nèi)容
*/
當我們在開發(fā)時為了方便調(diào)試,需要注釋一段多行的邏輯代碼,可以使用多行注釋:
public class Dog {
private int age;
private String name;
/*
多行注釋,注釋了這段代碼
public Dog (String name, int age) {
this.name = name;
this.age = age;
}
*/
public static void main(String[] args) {
}
}
3.2.3 文檔注釋
Java 中還有一種特殊的多行注釋 —— 文檔注釋,它以 /**
開頭,以 */
結(jié)尾,如果有多行,則每行都以 *
開頭,其在代碼中的寫法為:
/**
* HelloWorld 類
* 它是我的第一個 Java 程序
* @Author: Colorful
* @Date: 2020/02/02
*/
public class HelloWorld {
/**
* 主方法,向屏幕打印 Hello World!
* @param args 主方法的固定參數(shù)
*/
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
這種特殊的多行注釋需要寫在類和方法的定義處,可以使用 javadoc
這樣的命令來自動創(chuàng)建文檔。另外通常在程序開頭加入作者,時間,版本,要實現(xiàn)的功能等內(nèi)容注釋,方便程序的維護以及程序員的交流。
4 關鍵字和保留字
4.1 概念
關鍵字 (Keyword
) 是 Java 語言中的特殊標記。它已經(jīng)被語言本身預先使用,因此我們不能使用關鍵字作為我們標識符的命名。
例如 Java 基本類型的 int
、boolean
,流程控制語句中的 if
、for
,訪問修飾符 public
,以及一些用于聲明和定義 Java 類、包、接口的 class
、package
、interface
。
而保留字 (Reserved word
) 可能是未來的關鍵字,也就是說可能在未來的版本中,Java 語言作為特殊標記。
Tips:無論是關鍵字還是保留字,我們都要記?。翰荒苁褂盟鼈冏鳛槲覀兊拇a中的標識符。
4.2 Java 中有哪些關鍵字
關鍵字一律用小寫字母標識,Java 語言中定義了如下表所示的關鍵字:
關鍵字 | 說明 |
---|---|
abstract | 表明類或者成員方法具有抽象屬性 |
assert | 斷言,常用于程序的調(diào)試 |
boolean | 基本數(shù)據(jù)類型:布爾類型 |
break | 提前跳出一個塊 |
byte | 基本數(shù)據(jù)類型,字節(jié)類型 |
case | 用在 switch 語句之中,表示其中的一個分支 |
catch | 用在異常處理中,用來捕捉異常 |
char | 基本數(shù)據(jù)類型:字符類型 |
class | 用于聲明一個類 |
const | 保留關鍵字 |
continue | 回到一個塊的開始處 |
default | 默認,用在 switch 語句中,表明一個默認的分支;JDK1.8 以后也作用于聲明接口函數(shù)的默認實現(xiàn) |
do | 用在 do-while 循環(huán)結(jié)構中 |
double | 基本數(shù)據(jù)類型:雙精度浮點數(shù)類型 |
else | 用在條件語句中,表明當條件不成立時的分支 |
enum | 枚舉 |
extends | 表明一個類型是另一個類型的子類型。對于類,可以是另一個類或者抽象類;對于接口,可以是另一個接口 |
final | 用來說明最終屬性,表明一個類不能派生出子類,或者成員方法不能被覆蓋,或者成員域的值不能被改變,用來定義常量 |
finally | 用于處理異常情況,用來聲明一個基本肯定會被執(zhí)行到的語句塊 |
float | 基本數(shù)據(jù)類型之一,單精度浮點數(shù)類型 |
for | 一種循環(huán)結(jié)構的引導詞 |
goto | 保留關鍵字,沒有具體含義 |
if | 條件語句的引導詞 |
implements | 表明一個類實現(xiàn)了給定的接口 |
import | 表明要訪問指定的類或包 |
instanceof | 用來測試一個對象是否是指定類型的實例對象 |
int | 基本數(shù)據(jù)類型之一,整數(shù)類型 |
interface | 接口 |
long | 基本數(shù)據(jù)類型之一,長整數(shù)類型 |
native | 用來聲明一個方法是由與計算機相關的語言(如 C/C++/FORTRAN 語言)實現(xiàn)的 |
new | 用來創(chuàng)建新實例對象 |
package | 包 |
private | 一種訪問控制方式:私用模式 |
protected | 一種訪問控制方式:保護模式 |
public | 一種訪問控制方式:共用模式 |
return | 從成員方法中返回數(shù)據(jù) |
short | 基本數(shù)據(jù)類型之一,短整數(shù)類型 |
static | 表明具有靜態(tài)屬性 |
strictfp | 用來聲明 FP_strict(單精度或雙精度浮點數(shù))表達式遵循 IEEE 754 算術規(guī)范 |
super | 表明當前對象的父類型的引用或者父類型的構造方法 |
switch | 分支語句結(jié)構的引導詞 |
synchronized | 表明一段代碼需要同步執(zhí)行 |
this | 指向當前實例對象的引用 |
throw | 拋出一個異常 |
throws | 聲明在當前定義的成員方法中所有需要拋出的異常 |
transient | 聲明不用序列化的成員域 |
try | 嘗試一個可能拋出異常的程序塊 |
void | 聲明當前成員方法沒有返回值 |
volatile | 表明兩個或者多個變量必須同步地發(fā)生變化 |
while | 用在循環(huán)結(jié)構中 |
5. 小結(jié)
本小節(jié)我們學習了 Java 的基礎語法。我們知道了 Java 語言區(qū)分大小寫,類是一個程序的基本單位,所以說我們要編寫 Java 代碼,就要知道如何聲明一個類,而類中的主方法是一個程序執(zhí)行的起點。標識符是我們程序員在編程時所使用的名字,當我們?yōu)闃俗R符命名時,一定不能使用 Java 中的關鍵字。理解了注釋的概念和分類,另外也建議大家在編寫代碼的過程中多寫注釋,在學習別人代碼的過程中多看注釋。我們也將在后面的示例代碼中加入大量的注釋來幫助你理解程序。