Java語法基礎看這篇就夠了
在最近幾年的流行開發語言評比中,Java 一直穩居榜首。這不僅取決於 Java 自身擁有很多優點極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計之外,還因為 Java 的生態環境建設比較好,比如它也是我們常用的安卓作業系統的開發一級語言(當然,未來有可能被 Kotlin 取代)。
不管怎麼樣,瞭解 Java 是有必要的,下面我們就來梳理一下 Java 的語法知識點。其中涵蓋資料型別、變數、常量、運算子、選擇語句、迴圈語句、陣列、類、引用、方法等。本文希望以總結的方式進行闡述,方便開發人員日後查閱。
1. 資料型別
跟 C/C++ 有些不一樣,Java 的資料型別分為基本資料型別
1.1 基本資料型別
Java 的基本資料型別分四類,共八種,分別是:
- 邏輯型(boolean)
- 字元型(char)
- 整數型(byte、short、int、long)
- 浮點型(float、double)
其中,boolean 型別的值只有 true 和 false 兩種邏輯值(不能用0或非0的整數代替 true 和 false)。char 型別表示字元常量,是使用單引號括起來的字元,例如 char c1 = 'a'
或 char c2 = '我'
。由於 Java 字符采用 Unicode 編碼,所以每個字元佔兩個位元組。
【注意:這裡指的是在 Java 記憶體中 char 是兩個位元組,但是儲存到檔案中時每個字元佔多少個位元組則取決於檔案的字元編碼。】
整數型和浮點型可以統稱為數值資料型別,各種數值資料型別的範圍及儲存大小如下表所示。
型別名 | 範圍 | 儲存大小 |
---|---|---|
byte | -27(-128) ~ 27-1(127) | 8位帶符號數 |
short | -215(-32768) ~ 215-1(32767) | 16位帶符號數 |
int | -231(-2147483648) ~ 231-1(2147483647) | 32位帶符號數 |
long | -263 ~ 263-1 | 64位帶符號數 |
float | 負數範圍:-3.4028235E+38 ~ -1.4E-45 正數範圍:1.4E-45 ~ 3.4028235E+38 |
32位,標準IEEE 754 |
double | 負數範圍:-1.7976931348623157E+308 ~ -4.9E-324 正數範圍:4.9E-324 ~ 1.7976931348623157E+308 |
64位,標準IEEE 754 |
細心的你可以發現,除了 boolean 型別之外,其他七種資料型別都有明確的儲存大小,那麼 boolean 型別在 Java 中佔用多少個位元組呢?
經測試發現:
boolean a=true;
// boolean型的a在JVM中佔4個位元組,即32bit
boolean[] b = new boolean[10];
// boolean陣列b中的每一個boolean在JVM中佔1個位元組,即8bit
實際上,在《Java虛擬機器規範》一書中有描述:“雖然定義了 boolean 這種資料型別,但是隻對它提供了非常有限的支援。在 Java 虛擬機器中沒有任何供 boolean 值專用的位元組碼指令,Java 語言表示式所操作的 boolean 值,在編譯之後都使用 Java 虛擬機器中的 int 資料型別來代替,而 boolean 陣列將會被編碼成 Java 虛擬機器的 byte 陣列,每個元素 boolean 元素佔8位”。
這樣我們就可以解釋上面的測試,得出 boolean 型別佔了單獨使用是4個位元組,而在陣列中又是1個位元組的結論。
至於 boolean 型別為什麼是1個位元組或4個位元組,其實是運算效率和儲存空間之間的博弈。而對於開發者來說,我們只要記住 Java 的 boolean 型別的值只能是 true 或 false 即可。
1.2 引用資料型別
Java 有五種引用型別(物件型別),分別是:類(class)、介面(interface)、陣列(Array)、列舉(enum)、標註(Annotation)。
類引用可以是 Java 庫中的類,也可以是自己建立的類。Java 中常見的類有:Object、String、Date、Void 等,並且上面所說的八種基本資料型別都有相應的封裝類,如下表所示。
基本資料型別 | 封裝類 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
需要注意的是,Java 中的陣列屬於引用型別,其建立的是物件。例如:int[] a = new int[5];
,a 就是 int 型陣列物件。
(介面、列舉、標註會在其它文章進行描述。)
1.3 資料型別轉換
(未完待續)