天天看點

Java核心技術——基本程式設計結構基本程式設計文法

基本程式設計文法

簡單的Java程式組成

public class FirstSample
{
	public static void main(String[] args)
	{
		System.out.println("We will not use 'Hello, World!'");
	}
}
           
  1. Java區分大小寫
  2. 關鍵字public稱為通路修飾符(access modifier),用于控制程式的其他部分對這段代碼的通路級别
  3. 關鍵字class 表明Java程式中全部内容包含在類中,此程式中将類作為一個加載程式邏輯的容器,程式邏輯定義了程式的行為
  4. class後緊跟類名,類名必須以字母開頭,後跟字母數字的任意組合,長度基本沒有限制,但不能使用Java保留字作為類名
  5. 标準命名規範為:類名是以大寫字母開頭的名詞,如果名字有多個單詞組成,每個單詞的首字母都組要大寫(駱駝命名法)
  6. 源碼檔案必須以公共類的名字相同,并用.java作為擴充名。此代碼的命名為FirstSample.java,如果使用firstsample.java則不被通過,因為大小寫不同
  7. 如果已經正确地命名了這個檔案, 并且源代碼中沒有任何錄人錯誤,在編譯這段源代碼之後就會得到一個包含這個類位元組碼的檔案。Java 編譯器将位元組碼檔案自動地命名為FirstSample.class, 并與源檔案存儲在同一個目錄下。
  8. 運作已編譯的程式時,Java 虛拟機将從指定類中的 main 方法開始執行(這裡的“方法”就是 Java 中所說的“函數”),是以為了代碼能夠執行,在類的源檔案中必須包含一個 main方法。當然,也可以将使用者自定義的方法添加到類中,并且在 main 方法中調用它們。
  9. 根據 Java 語言規範,main 方法必須聲明為 public
  10. Java 的類與 C++ 的類很相似,但Java 中的所有函數都屬于某個類的方法(标準術語将其稱為方法, 而不是成員函數)。是以,Java 中的 main 方法必須有一個外殼類。
  11. C++ 中的靜态成員函數( static member functions),這些成員函數定義在類的内部, 并且不對對象進行操作。Java 中的 main 方法必須是靜态的。最後,與 C/C++—樣,關鍵字 void 表示這個方法沒有傳回值, 所不同的是 main 方法沒有為作業系統傳回“ 退出代碼”。如果 main 方法正常退出, 那麼 Java 應用程式的退出代碼為 0,表示成功地運作了程式。如果希望在終止程式時傳回其他的代碼, 那就需要調用 System.exit 方法。
  12. 在這裡,使用了 System.out 對象并調用了它的 println 方法。注意, 點号( • )用于調用方法。Java 使用的通用文法是
  • object.method(parameters)
               
  1. 在 Java 的方法中,可以沒有參數, 也可以有一個或多個參數(有的程式員把參數叫做實參)。對于一個方法, 即使沒有參數也需要使用空括号。例如:
  2. 注釋:單行注釋//、長篇注釋不能嵌套、生成文檔以/*開始,以/結束
    /**
    * 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類型

  1. 整型:表示沒有小數部分的數值,允許是負數。
類型 存儲需求 取值範圍 預設值
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
  1. 浮點類型:浮點類型用于表示有小數部分的數值。浮點數不能表示精确的值,如貨币。
類型 存儲需求 取值範圍 預設值
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類

  1. char類型,char類型的字面量值要用單引号括起來例如:W 是編碼值為 65 所對應的字元常量。它與 “A” 不同,“A” 是包含一個字元 A 的字元串, char 類型的值可以表示為十六進制值,其

    範圍從 \u0000 到 \Uffff。例如:\u2122 表示注冊符号™, \u03C0 表示希臘字母 π。

    特殊字元的轉義序列

轉義序列 名稱 Unicode值
\b 倒退 \u0008
\t 制表 \u0009
\n 換行 \u000a
\r 回車 \u000d
\“ 雙引号 \u0022
\’ 單引号 \u0027
\ 反斜杠 \u005c
  1. 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 代碼單元。最好将字元串作為抽象資料類型處理
  2. boolean類型
    • boolean (布爾)類型有兩個值:false 和 true, 用來判定邏輯條件 整型值和布爾值之間不能進行互相轉換。
    • 在Java中值0與布爾值false并不相等,條件語句中整數表達式 x = 0 不能轉換為布爾值,這是和C/C++ 不同的地方