在最近幾年的流行開發語言評比中,Java 一直穩居榜首。這不僅取決於 Java 自身擁有很多優點極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程之外,還因為 Java 的生態環境建設比較好,比如它也是我們常用的安卓作業系統的開發一級語言(當然,未來有可能被 Kotlin 取代)。
不管怎麼樣,瞭解 Java 是有必要的,下面我們就來梳理一下 Java 的文法知識點。其中涵蓋資料類型、變數、常量、運算子、選擇語句、迴圈語句、數組、類、引用、方法等。本文希望以總結的方式進行闡述,方便開發人員日後查閱。 1. 資料類型
跟 C/C++ 有些不一樣,Java 的資料類型分為基礎資料型別 (Elementary Data Type)和引用資料類型。 1.1 基礎資料型別 (Elementary Data Type)
Java 的基礎資料型別 (Elementary Data Type)分四類,共八種,分別是: 邏輯型(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個位元組,即32bitboolean[] 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 等,並且上面所說的八種基礎資料型別 (Elementary Data Type)都有相應的封裝類,如下表所示。
| 基礎資料型別 (Elementary Data Type) |
封裝類 |
| 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 資料類型轉換
(未完待續)