Java基礎系列(1)數據類型。(Char,Unicode,UTF-16)

Java是一種強類型語言。這就意味着必須爲每一個變量聲明一種類型。在Java中,一共有8種基本類型(Primitive Type)。其中有4種整型、2種浮點型、1種用戶表示Unicode編碼的字符單元的字符類型char和一種用於表示真值的boolean類型。

 

1. 整型

用於表示沒有小數部分的數值,允許爲負。

 

類型 字數 範圍

類型

字節數

範圍

int

4字節

-2147483648 ~ 2147483647

short

2字節

-32768 ~ 32767

long

8字節

-9223372036854775808 

~ 9223372036854775807

byte

1字節

-128 ~ 127

在 Java 中, 整型的範圍與運行 Java 代碼的機器無關。從 Java 7 開始, 加上前綴 0b 或 0B 就可以寫二進制數。 例如, 0B1001就是 9。另外, 同樣是 從Java7開始,還可以爲數字字面量加下劃線,如用1_000_000表示100萬。

 

2. 浮點類型

 

浮點類型用於表示有小數部分的數值。

類型

字節數

範圍

float

4字節

大約 ± 3.40282347E+38

double

8字節

大約 ± 1.79769313486231570E+308

 

float:1bit(符號位)+8bits(指數位)+23bits(尾數位)

double:1bit(符號位)+ 11bits(指數位)+ 52bits(尾數位)

 

double 表示這種類型的數值精度是 float 類型的兩倍 (有人稱之爲雙精度數值 )。float類型的數值有一個後綴F或f (例如,3.14F)。 沒有後綴F的浮點數值(如3.14) 默認爲 double 類型。當然,也可以在浮點數值後面添加後綴 D 或 d ( 例如, 3.14D)。

 

三個特殊的浮點數值: 正無窮大、負無窮大、NaN(不是一個數字)。

常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN分別表示。

例如, 一個正整數除以 0 的結果爲正無窮大。計算 0/0 或者負數的平方根結果爲 NaN。

 

3. char類型

char類型佔用兩個字節,char類型原本用於表示單個字符。不過,現在情況已經有所變化。 如今, 有些 Unicode 字符可以用一個char 值描述, 另外一些 Unicode 字符則需要兩個 char 值。

char類型的值可以表示爲十六進制值,其範圍從 \u0000 到 \uffff ,其中\u爲轉移序列。

 

4. Unicode 和 char 類型

 

在 Unicode 出現之前,已經有許多種不同的標準: 美國的 ASCII、 西歐語言中的 ISO 8859-1,俄羅斯的 KOI-8、 中國的GB18030和BIG-5等。這樣就產生了下面兩個問題: 一個是對於任意給定的代碼值, 在不同的編碼方案下有可能對應不同的字母; 二是採用大字符集的語言其編碼長度有可能不同。例如, 有些常用的字符采用單字節編碼,而另一些字符則需要兩個或更多個字節。

設計 Unicode 編碼的目的就是要解決這些問題。在 20 世紀 80 年代開始啓動設計工作時, 人們認爲兩個字節的代碼寬度足以對世界上各種語言的所有字符進行編碼, 並有足夠的空間 留給未來的擴展。在設計 Java 時決定採用 16 位的 Unicode 字符集, 這樣會比使用 8 位字符集的程序設 計語言有很大的改進。

十分遺憾, 經過一段時間, 不可避免的事情發生了。Unicode字符超過了 65536 個, 其主要原因是增加了大量的漢語、 日語和韓語中的表意文字。 現在, 16 位的 char 類型已經不能滿足描述所有 Unicode 字符的需要了。

下面利用一些專用術語解釋一下 Java 語言解決這個問題的基本方法。碼點 ( code point ) 是指與一個編碼表中的某個字符對應的代碼值。在 Unicode 標準中, 碼點採用十六進制書寫,並加上前綴U+, 例如U+0041就是拉丁字母A的碼點。Unicode的 碼點可以分成 17 個代碼級別(code plane)。第一個代碼級別稱爲基本的多語言級別(basic multilingual plane ), 碼點從 U+0000 到 U+FFFF , 其中包括經典的 Unicode 代碼;其餘的 16 個級別碼點從U+10000到U+10FFFF, 其中包括一些輔助字符(supplementary character)。

UTF-16 編碼採用不同長度的編碼表示所有 Unicode 碼點。在基本的多語言級別中(U+0000 到 U+FFFF), 每個字符用16位表示,通常被稱爲代碼單元(code unit); 而輔助字符采用一對連續的代碼單元進行編碼。

在 Java 中,char 類型描述了UTF-16編碼中的一個代碼單元。

 

5. boolean類型

boolean ( 布爾)類型有兩個值: false 和 true , 用來判定邏輯條件,整型值和布爾值之間不能進行相互轉換。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章