1. 程式人生 > 實用技巧 >Java基本的程式設計結構

Java基本的程式設計結構

Java基本的程式設計結構

註釋

註釋有兩種。

一種是行註釋:

//這是註釋

另一種是塊註釋

/**
* 這是塊註釋
*/

資料型別

java中一共有8種基本資料型別:整型、浮點型、布林型、字元型別。

整型

型別 大小(位元組) 取值
byte 1 -2^7^~2^7^-1
short 2 -2^15~^2^15^-1
int 4 -2^31^~2^31^-1
long 8 -2^63^~2^63^-1
  1. 長整數型別後面跟有一個字尾L,如:1234424242L。
  2. 十六進位制數值有一個字首0x,如:0x123。
  3. java沒有任何無符號型別。
  4. 不加字尾的數字(即便有0x字首)預設為int型別。

浮點型別

型別 大小(位元組) 取值
float 4 有效數字6-7位
double 8 有效數字15位
  1. double型別字尾為D。
  2. float型別字尾為F。
  3. 浮點值預設為double。
  4. 可以用“尾數e指數”或“尾數p指數”形式表達浮點數。
    1. 尾數e指數:指數基數是10;用於十進位制尾數。
    2. 尾數p指數:指數基數是2;用於十六進位制尾數。
  5. 浮點運算遵循IEEE 754規範,用正無窮、負無窮、NaN來表示溢位和出錯。
    1. 在Float和Double型別中用常量POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN表示上述三個值。
    2. 對NaN值的判定不應用“==”,而要用isNaN等靜態方法;但是對無窮的判定可以用“==”;如下。
    //驗證java中浮點值NaN和無窮值
    public static void verifyNaN() {
        //NaN
        System.out.println(Double.NaN == Double.NaN);
        System.out.println(Double.isNaN(Double.NaN));
        //POSITIVE_INFINITY
        System.out.println(Double.POSITIVE_INFINITY == Double.POSITIVE_INFINITY);
        System.out.println(Double.POSITIVE_INFINITY + 1 == Double.POSITIVE_INFINITY);
    }

呼叫結果:

false
true
true
true

字元型別

java中的字元型別和C中的字元型別不同。

  1. C中字元大小為單位元組,而java中字元大小為雙位元組。

  2. C的字元型別表示Ascii字元。java的字元型別表示Unicode字元型別(可以表示中文)。

  3. java中字元的三種形式:字元本身、轉義字元、Unicode編碼;如下。

    //java字元的三種表示
    public static void charFormat() {
        //字元本身
        System.out.println("字元本身:");
        System.out.println('哈');
        System.out.println('A');
        //轉義字元
        System.out.println("轉義字元:");
        System.out.print('A');
        System.out.print('\t');
        System.out.println('B');
        //Unicode編碼
        System.out.println("Unicode編碼:");
        System.out.println('\u03C0');//pai
    }

呼叫結果:

字元本身:
哈
A
轉義字元:
A	B
Unicode編碼:
π
  1. Unicode編碼的目的是統一各種編碼格式,由於最初的Unicode字符集並不大,因此java採用了雙位元組字元型別。然而後來Unicode字符集急劇擴充,雙位元組已經不夠用了,下面解釋java解決這個問題的辦法。
    1. Unicode將所有字元編碼,將這個編碼值稱為程式碼點(codePoint)。
    2. 對於0x0000-0xffff直接的字元,可以用雙位元組的char表示,因此對應字元集合稱為基本多語言平面(BMP),而0xffff以上的成為增補字符集,增補字符集無法用char表示,需要用String類、char[]等表示。
    3. 程式碼點是指一個Unicode字元,而程式碼單元是指一個記憶體中的雙位元組char,對於bmp字元,一個程式碼點對應一個程式碼單元,而對於增補字元,一個程式碼點對應兩個程式碼單元。
    4. String.length(),返回的是程式碼單元的數量,而不是程式碼點的數量。
    //java中的程式碼點、程式碼單元
    public static void codePoint() {
        char ch = '\u0041';//bmp字元
        //ch = '\u1d56b';//增補字元,這樣寫會報錯,因為增補字元超出了char的表示範圍

        String str = new String(Character.toChars(0x1d56b));//增補字元
        //length()方法返回的是程式碼單元(char)數量,一個增補字元佔據兩個程式碼單元;
        System.out.println(str + ":" + str.length());
    }

呼叫結果: