《Java核心技術 卷I》學習筆記2:資料型別、變數與常量
Java是一種強型別語言,必須為每個變數宣告一種型別。在Java中,一共有8種基本型別,其中有4中整型、2種浮點型別、1中字元型別和一種boolean型別
1 資料型別
1.1 整型
型別 | 儲存長度 | 取值範圍 |
---|---|---|
int | 4位元組 | -2 147 483 648~2 147 483 647 |
short | 2位元組 | -32768~32767 |
long | 8位元組 | -9 223 372 036 854 775 808 ~9 223 372 036 854 775 807 |
byte | 1位元組 | -128~127 |
長整型數值有一個字尾L或l(如4000000000L),十六進位制數值有一個字首0x或0X(如0xCAFE),八進位制有一個字首0。八進位制表示法比較容易混淆,所以最好不要使用八進位制常數。
從Java 7開始,可以用字首0b或0B表示二進位制數。此外,從Java 7開始,還可以為數字字面量加下劃線(如1_000_000),使數字更易讀,Java編譯器會去除這些下劃線,不會對程式產生影響。
1.2 浮點型別
型別 | 儲存長度 | 取值範圍 |
---|---|---|
float | 4位元組 | 大約±3.402 823 47E+38F(有效位數為6~7位) |
double | 8位元組 | 大約±1.797 693 134 862 315 70E+308(有效位數為15位) |
float型別的數值有一個字尾F或f(如3.14F),沒有字尾F的浮點數值預設為double型別。也可以在double型別數值後面新增字尾D或d。
可以使用十六進位制表示浮點數值,尾數採用十六進位制,指數採用十進位制,指數的基數是2,尾數和指數之間用p分隔。例如,0.125=2-3,在十六進位制表示法中表示為0x1.0p-3,其中0x是十六進位制字首,1.0是尾數,-3是指數。
1.3 char型別
char型別的字面值要用單引號括起來,如’A’是一個字元常量,而"A"是一個字串。
char型別的值可以表示為十六進位制值,其範圍從\u0000到\uFFFF。\u是一個轉義序列,後面跟四位十六進位制數,表示一個字元。除此之外,還有一些用於表示特殊字元的轉義序列,如下表所示。
轉義序列 | 名稱 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 製表 | \u0009 |
\n | 換行 | \u000a |
\r | 回車 | \u000d |
\" | 雙引號 | \u0022 |
\’ | 單引號 | \u0027 |
\\ | 反斜槓 | \u005c |
所有這些轉義序列都可以出現在加引號的字元字面量或字串中,例如’\u2122’和"Hello\n"。
轉義序列\u還可以出現在加引號的字元常量或字串之外,而其他所有轉義序列不可以。例如:
public static void main(String\u005B\u005D args)
這種寫法符合語法規則,\u005B和\u005D分別是’[‘和’]'的編碼。
一定要當心註釋中的\u。例如:
// \u000A is a newline
錯誤,因為\u000A是換行符,之後的所有內容在下一行,不屬於註釋內容
// look inside c:\users
錯誤,因為\u後面沒有跟著四位十六進位制數。正確的寫法為c:\\users,\\是轉義序列,表示反斜槓
1.4 Unicode編碼與char型別
碼點(code point)是指與一個編碼表中的某個字元對應的程式碼值。在Unicode標準中,碼點採用16進位制書寫,並加上字首“U+”,例如“U+0041”是“A”的碼點。Unicode的碼點可分為17個程式碼平面(code plane)。第一個程式碼平面稱為基本多語言平面,包括碼點從U+0000到U+FFFF的“經典”Unicode程式碼;其餘16個平面的碼點從U+10000到U+10FFFF,包括輔助字元。
UTF-16編碼採用不同長度的編碼表示所有Unicode碼點。在基本多語言平面中,每個字元用16位表示,通常稱為程式碼單元(code unit);而輔助字元編碼為一對連續的程式碼單元,即32位。輔助字元的兩個程式碼單元取值落入基本多語言平面中未用的2048個值範圍內,通常稱為替代區域。這樣,對於任意給定的一個程式碼單元,可以迅速確定它是一個字元的編碼,還是一個輔助字元的第一部分或第二部分。
在Java中,char型別描述了UTF-16編碼中的一個程式碼單元。對於基本多語言平面中的字元,只需要1個char值;而輔助字元則需要2個char值。對於一個單獨的char值,當它代表輔助字元中的一個程式碼單元時,對它的解釋將沒有意義。因此,最好不要在程式中使用char型別,除非需要處理UTF-16程式碼單元。
1.5 boolean型別
boolean型別有兩個值:false和true,用來判定邏輯條件。整型值和布林值之間不能進行相互轉換。
2 變數與常量
2.1 變數
宣告變數時,先指定變數的型別,然後是變數名。例如:
double salary;
int vacationDays;
long earthPopulation;
boolean done;
變數名必須是一個以字母開頭並由字母或數字構成的序列。變數名中所有的字元都有意義,並且大小寫敏感。
宣告一個變數之後,必須用賦值語句對變數進行顯示初始化,千萬不要使用未初始化的變數的值。
變數的宣告儘可能地靠近變數第一次使用的地方,這是一種良好的程式碼風格。
從Java 10開始,對於區域性變數,如果可以從變數的初始值推斷出它的型別,就不再需要宣告型別,只需要使用關鍵字var而無需指定型別。例如:
var vacationDays = 12;
var greeting = "Hello";
2.2 常量
在Java中,使用關鍵字final指示常量。例如:
final double CM_PER_INCH = 2.54;
常量只能被賦值一次,一旦被賦值後,就不能再更改了。習慣上,常量名使用全大寫。
可以在類中使用關鍵字static final設定類常量,這樣就可以在類的多個方法中使用這個常量。例如:
public class Constant
{
public static final double CM_PER_INCH = 2.54;
}
相關文章
- 《Java核心技術 卷I》學習筆記10:使用預定義類Java筆記
- 【Java核心技術卷】深入理解Java資料型別、變數 (擴充套件講解,結合Java資料型別變數套件
- Flutter學習筆記(3)--Dart變數與基本資料型別Flutter筆記Dart變數資料型別
- Java小白進階筆記(2)-變數和資料型別Java筆記變數資料型別
- JAVA核心技術學習筆記--反射Java筆記反射
- TensorFlow筆記(2) 常量與變數【僅供自學】筆記變數
- Java第三天【變數、常量、資料型別】Java變數資料型別
- [go 學習筆記] 二、變數、常量Go筆記變數
- 大樓的基石 資料型別 變數與常量資料型別變數
- 逍遙自在學C語言 | 變數、常量與資料型別C語言變數資料型別
- redis學習筆記2: Redis資料型別Redis筆記資料型別
- Python學習筆記2:基本資料型別Python筆記資料型別
- Java學習筆記8-資料型別Java筆記資料型別
- 變數與常量 - Go 學習記錄變數Go
- C語言-變數常量資料型別C語言變數資料型別
- 《Java核心技術(卷1)》筆記:第8章 泛型程式設計Java筆記泛型程式設計
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- Python 學習筆記——資料型別Python筆記資料型別
- Redis 筆記(核心資料型別)Redis筆記資料型別
- PHP變數與常量學習PHP變數
- [python學習手冊-筆記]002.python核心資料型別Python筆記資料型別
- Java核心技術 卷1 基礎知識 部分筆記Java筆記
- 從零開始學GO ---- (1) 變數、常量、基本資料型別Go變數資料型別
- Redis學習筆記 – 資料型別與API(1)KeyRedis筆記資料型別API
- java核心技術卷1學習思維導圖Java
- Java雜記1—資料型別和變數Java資料型別變數
- Python學習筆記(一) 資料型別Python筆記資料型別
- 《Java核心技術》第五章 繼承 學習筆記Java繼承筆記
- Java個人學習筆記-資料型別及取值範圍Java筆記資料型別
- Python 3 學習筆記之——資料型別Python筆記資料型別
- Redis學習筆記(二)——Redis資料型別Redis筆記資料型別
- TensorFlow常量、變數和佔位符詳解(學習筆記)變數筆記
- 二、變數與資料型別變數資料型別
- Java技術分享:Java基本資料型別Java資料型別
- java核心技術閱讀筆記Java筆記
- Java核心技術筆記 繼承Java筆記繼承
- Java檢視變數資料型別Java變數資料型別
- OpenCV學習筆記(3)——Scalar資料型別理解OpenCV筆記資料型別