Java基本的程式設計結構
阿新 • • 發佈:2020-07-31
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 |
- 長整數型別後面跟有一個字尾L,如:1234424242L。
- 十六進位制數值有一個字首0x,如:0x123。
- java沒有任何無符號型別。
- 不加字尾的數字(即便有0x字首)預設為int型別。
浮點型別
型別 | 大小(位元組) | 取值 |
---|---|---|
float | 4 | 有效數字6-7位 |
double | 8 | 有效數字15位 |
- double型別字尾為D。
- float型別字尾為F。
- 浮點值預設為double。
- 可以用“尾數e指數”或“尾數p指數”形式表達浮點數。
- 尾數e指數:指數基數是10;用於十進位制尾數。
- 尾數p指數:指數基數是2;用於十六進位制尾數。
- 浮點運算遵循IEEE 754規範,用正無窮、負無窮、NaN來表示溢位和出錯。
- 在Float和Double型別中用常量POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN表示上述三個值。
- 對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中的字元型別不同。
-
C中字元大小為單位元組,而java中字元大小為雙位元組。
-
C的字元型別表示Ascii字元。java的字元型別表示Unicode字元型別(可以表示中文)。
-
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編碼:
π
- Unicode編碼的目的是統一各種編碼格式,由於最初的Unicode字符集並不大,因此java採用了雙位元組字元型別。然而後來Unicode字符集急劇擴充,雙位元組已經不夠用了,下面解釋java解決這個問題的辦法。
- Unicode將所有字元編碼,將這個編碼值稱為程式碼點(codePoint)。
- 對於0x0000-0xffff直接的字元,可以用雙位元組的char表示,因此對應字元集合稱為基本多語言平面(BMP),而0xffff以上的成為增補字符集,增補字符集無法用char表示,需要用String類、char[]等表示。
- 程式碼點是指一個Unicode字元,而程式碼單元是指一個記憶體中的雙位元組char,對於bmp字元,一個程式碼點對應一個程式碼單元,而對於增補字元,一個程式碼點對應兩個程式碼單元。
- 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());
}
呼叫結果: