基本程式設計文法
簡單的Java程式組成
public class FirstSample
{
public static void main(String[] args)
{
System.out.println("We will not use 'Hello, World!'");
}
}
- Java區分大小寫
- 關鍵字public稱為通路修飾符(access modifier),用于控制程式的其他部分對這段代碼的通路級别
- 關鍵字class 表明Java程式中全部内容包含在類中,此程式中将類作為一個加載程式邏輯的容器,程式邏輯定義了程式的行為
- class後緊跟類名,類名必須以字母開頭,後跟字母數字的任意組合,長度基本沒有限制,但不能使用Java保留字作為類名
- 标準命名規範為:類名是以大寫字母開頭的名詞,如果名字有多個單詞組成,每個單詞的首字母都組要大寫(駱駝命名法)
- 源碼檔案必須以公共類的名字相同,并用.java作為擴充名。此代碼的命名為FirstSample.java,如果使用firstsample.java則不被通過,因為大小寫不同
- 如果已經正确地命名了這個檔案, 并且源代碼中沒有任何錄人錯誤,在編譯這段源代碼之後就會得到一個包含這個類位元組碼的檔案。Java 編譯器将位元組碼檔案自動地命名為FirstSample.class, 并與源檔案存儲在同一個目錄下。
- 運作已編譯的程式時,Java 虛拟機将從指定類中的 main 方法開始執行(這裡的“方法”就是 Java 中所說的“函數”),是以為了代碼能夠執行,在類的源檔案中必須包含一個 main方法。當然,也可以将使用者自定義的方法添加到類中,并且在 main 方法中調用它們。
- 根據 Java 語言規範,main 方法必須聲明為 public
- Java 的類與 C++ 的類很相似,但Java 中的所有函數都屬于某個類的方法(标準術語将其稱為方法, 而不是成員函數)。是以,Java 中的 main 方法必須有一個外殼類。
- C++ 中的靜态成員函數( static member functions),這些成員函數定義在類的内部, 并且不對對象進行操作。Java 中的 main 方法必須是靜态的。最後,與 C/C++—樣,關鍵字 void 表示這個方法沒有傳回值, 所不同的是 main 方法沒有為作業系統傳回“ 退出代碼”。如果 main 方法正常退出, 那麼 Java 應用程式的退出代碼為 0,表示成功地運作了程式。如果希望在終止程式時傳回其他的代碼, 那就需要調用 System.exit 方法。
- 在這裡,使用了 System.out 對象并調用了它的 println 方法。注意, 點号( • )用于調用方法。Java 使用的通用文法是
-
object.method(parameters)
- 在 Java 的方法中,可以沒有參數, 也可以有一個或多個參數(有的程式員把參數叫做實參)。對于一個方法, 即使沒有參數也需要使用空括号。例如:
- 注釋:單行注釋//、長篇注釋不能嵌套、生成文檔以/*開始,以/結束
/** * This is the first sample program * @2021.01 */ public class FirstSample { public static void main(String[] args) { System.out.println("We will not use 'Hello, World!'");//is this too cute? } }
資料類型
Java是一種強類型語言,這就意味着必須為每一個變量聲明一種類型。在Java中一共有8種基本類型(primitive type),其中有4種整形、2種浮點型、1種用于表示Unicode編碼的字元單元的字元類型char和1種用于表示真值的boolean類型
- 整型:表示沒有小數部分的數值,允許是負數。
類型 | 存儲需求 | 取值範圍 | 預設值 |
---|---|---|---|
int | 4位元組 | -231~231-1即 -2,147,483,648— 2,147,483,647 | |
short | 2位元組 | -215~215-1即 -32768—32767 | |
long | 8位元組 | -263~263-1即 -9,223,372,036,854,775,808—9,223,372,036,854,775,807 | 0L |
byte | 1位元組 | -27~27-1即 -128—127 |
- int類型最常用,數值特别大時使用long類型,byte和short類型主要用于特定的場合。各種資料類型的取值範圍必須固定,保證能在不同的機器上運作。
- byte 類型用在大型數組中節約空間,主要代替整數,因為 byte 變量占用的空間隻有 int 類型的四分之一;
- short 資料類型也可以像 byte 那樣節省空間。一個 short 變量是 int 型變量所占空間的二分之一;
- 一般地整型變量預設為 int 類型;
- 這種類型主要使用在需要比較大整數的系統上;
- Java沒有任何無符号(unsigned)形式的int、long、short或者byte類型。
進制 | 表示 |
---|---|
16進制 | 字首0x或者0X |
2進制 | 字首0b或者0B |
- 浮點類型:浮點類型用于表示有小數部分的數值。浮點數不能表示精确的值,如貨币。
類型 | 存儲需求 | 取值範圍 | 預設值 |
---|---|---|---|
float | 4位元組 | 大約 ± 3.402 823 47E+38F (有效位數為 6 ~ 7 位) | 0.0f |
double | 8位元組 | 大約 ± 1.797 693 134 862 315 70E+308 (有效位數為 15 位) | 0.0d |
- float 類型是單精度、32位、符合IEEE754标準的浮點數,float在存儲大型浮點數組的時候可以節省存儲空間
- double類型是雙精度、64位、符合IEEE754标準的浮點數,浮點數的預設類型位double類型
- 用于表示溢出和出錯情況的三個特殊的浮點數值:正無窮大、負無窮大、NaN
警告: 浮點數值不适用于無法接受舍入誤差的金融計算中。例如,指令 System.out.println( 2.0-1.1 ) 将列印出 0.8999999999999999, 而不是人們想象的 0.9。這種舍入誤差的主要原因是浮點數值采用二進制系統表示, 而在二進制系統中無法精确地表示分數 1/10。這就好像十進制無法精确地表示分數 1/3—樣。如果在數值計算中不允許有任何舍入誤差,就應該使用 BigDecimal類
-
char類型,char類型的字面量值要用單引号括起來例如:W 是編碼值為 65 所對應的字元常量。它與 “A” 不同,“A” 是包含一個字元 A 的字元串, char 類型的值可以表示為十六進制值,其
範圍從 \u0000 到 \Uffff。例如:\u2122 表示注冊符号™, \u03C0 表示希臘字母 π。
特殊字元的轉義序列
轉義序列 | 名稱 | Unicode值 |
---|---|---|
\b | 倒退 | \u0008 |
\t | 制表 | \u0009 |
\n | 換行 | \u000a |
\r | 回車 | \u000d |
\“ | 雙引号 | \u0022 |
\’ | 單引号 | \u0027 |
\ | 反斜杠 | \u005c |
- Unicode和char類型
- Unicode 編碼方式為解決對于任意給定的代碼值,在不同編碼方案下有可能對應不同的字母,以及采用大字元集的語言其編碼程度不同等問題而提出的
- 從 Java SE 5.0 開 始。碼點(code point)是指與一個編碼表中的某個字元對應的代碼值。在 Unicode 标準中,碼點采用十六進制書寫,并加上字首 U+
- Unicode 的碼點可以分成 17 個代碼級别( codeplane)。第一個代碼級别稱為基本的多語言級别( basicmultilingual plane ), 碼點從U+0000 到 U+FFFF, 其中包括經典的 Unicode 代碼;其餘的 16個級别碼點從 U+10000 到 U+10FFFF , 其中包括一些輔助字元(supplementary character)
- UTF-16 編碼采用不同長度的編碼表示所有 Unicode 碼點。在基本的多語言級别中,每個字元用 16 位表示,通常被稱為代碼單元( code unit);而輔助字元采用一對連續的代碼單元進行編碼
- 在 Java 中,char 類型描述了 UTF-16 編碼中的一個代碼單元。強烈建議不要在程式中使用 char 類型,除非确實需要處理 UTF-16 代碼單元。最好将字元串作為抽象資料類型處理
- boolean類型
- boolean (布爾)類型有兩個值:false 和 true, 用來判定邏輯條件 整型值和布爾值之間不能進行互相轉換。
- 在Java中值0與布爾值false并不相等,條件語句中整數表達式 x = 0 不能轉換為布爾值,這是和C/C++ 不同的地方