Java基本資料型別
摘要:
每個資料型別都有它的取值范圍,編譯器會根據每個變數或常量的資料型別為其分配記憶體空間,Java為數值、字符值和布林值資料提供了八種基本資料型別,

文章目錄
- Java基本資料型別
- 一、整數型別
- 1.數值前綴和后綴
- 2.Java&C++提示
- 二、浮點型別
- 1.double&float
- 2.浮點數值的后綴
- 3.浮點數的表示
- 3.三個特殊的浮點數值
- 三、字符型別
- 1.字符的表示
- 2.Unicode 和 ASCII 碼
- 3.轉義字符
- 4.字符型資料與數值型資料之間的轉換
- 5.字符的比較和測驗
- 四、布爾型別
一、整數型別
整型于表示沒有小數部分的數值,它可以是負數,
| 型別 | 存盤需求 | 取值范圍 | 數值 |
|---|---|---|---|
| byte | 1位元組 | ? 2 7 -2^7 ?27 ~ 2 7 ? 1 2^7-1 27?1 (-128 ~ 127) | 8 位帶符號數 |
| short | 2位元組 | ? 2 15 -2^{15} ?215 ~ ? 2 15 ? 1 -2^{15}-1 ?215?1 (-32 768 ~ 32 767) | 16 位帶符號數 |
| int | 4位元組 | ? 2 31 -2^{31} ?231 ~ ? 2 31 ? 1 -2^{31}-1 ?231?1 ((-2 147 483 648 ~ 2 147 483 647) | 32 位帶符號敗 |
| long | 8位元組 | ? 2 63 -2^{63} ?263 ~ ? 2 63 ? 1 -2^{63}-1 ?263?1 (即 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 8077) | 64 位帶符號數 |
1.數值前綴和后綴
- 十六進制數值有
0x或0X前綴 - 八進制數值有前綴
0 - 二進制數值有前綴
0b或0B - 可以為數值增加下劃線:如
1_000_000,0b1111_0100_1111 - 長整型數值有后綴
L或l
2.Java&C++提示
1.Java中, 整型的范圍與運行 Java 代碼的機器無關,
2. Java 沒有任何元符號 unsigned 形式 int long short byte 型別
二、浮點型別
浮點型別用于表示有小數部分的數值
| 型別 | 存盤需求 | 取值范圍 | 數值 | 有效數位 |
|---|---|---|---|---|
| float | 4位元組 | 負數范圍: ? 3.4028235 × 1 0 + 38 -3.4028235\times10^{+38} ?3.4028235×10+38~ ? 1.4 × 1 0 ? 45 -1.4\times10^{-45} ?1.4×10?45 正數范圍: 1.4 × 1 0 ? 45 1.4\times10^{-45} 1.4×10?45 ~ 3.4028235 × 1 0 + 38 3.4028235\times10^{+38} 3.4028235×10+38 | 32 位,標準 IEEE 754 | (有效位數為6 - 7位) |
| double | 8位元組 | 負數范圍: ? 1.7976931348623157 × 1 0 + 308 -1.7976931348623157\times10^{+308} ?1.7976931348623157×10+308~ ? 4.9 × 1 0 ? 324 -4.9\times10^{-324} ?4.9×10?324 正數范圍: 4.9 × 1 0 ? 324 4.9\times10^{-324} 4.9×10?324 ~ 1.7976931348623157 × 1 0 + 308 1.7976931348623157\times10^{+308} 1.7976931348623157×10+308 | 64 位,標準 IEEE 754 | (有效位數為 15 位) |
浮點數值不適用于無法接受舍入誤差的計算中,如果在數值計算中不允許有任何舍入誤差,應該使用 BigDecimal 類
1.double&float
- double 型是 float 型的兩倍,所以,double 型又稱為雙精度 (double precision), 而 float 稱為單精度 ( single precision),
- 在很多情況下, float 型別 的精度很難滿足需求,通常情況下,應該使用 double 型,
2.浮點數值的后綴
- float 型別的數值有
F或f后綴 - double 型別的可以有
D或d后綴 - 沒有后綴的浮點數值默認為 double 型別
3.浮點數的表示
科學計數法表示:
1.23456 × 1 0 2 1.23456 \times 10^2 1.23456×102 可以寫成 1.23456E2 或者 l.23456E+2
- 浮點型直接量可以用 a × 1 0 b a\times10^b a×10b 形式的科學記數法表示
- E (或 e) 表示指數,既可以是大寫的也可以是小寫的
十六進制數表示:
0.125 × 2 ? 3 \times2^{-3} ×2?3 可以表示成 0x1.0p-3
- 在十六進制表示法中,使用
p表示指數 - 尾數采用十六進制,指數采用十進制
- 指數的基數是 2, 而不10
3.三個特殊的浮點數值
-
正無窮大
Double.POSITIV E_INFINITY、Float.POSITIVE_INFINITY -
負無窮大
Double.NEGATIV_INFINlTY、Float.NEGATIV_INFINlTY -
NaN(不是一個數字)
Double.NaN、Float.NaN
注:不能這樣檜測一個特定值是否等于 Double.NaN,可以使用 Double.isNaN 方法
if (x == Double.NaN) // is never true
if (Double.isNaN(x)) // check whe ther x is "not a number"
三、字符型別
字符資料型別表示單個字符,一些Unicode字符需要兩個char值
1.字符的表示
-
字符型直接量用單引號括住
char letter = 'A';字串直接量必須括在雙引號中,而字符直接量是括在單引號中的單個字符,
2.Unicode 和 ASCII 碼
編碼(encoding):將字符映射到它的二進制形式的程序, 編碼表(encoding scheme)
scheme):字符有多種不同的編碼方式,編碼表定義該如何編碼每個字符,
-
ASCII 碼(美國標準資訊交換碼)是表示所有大小寫字母、數字、標點符號和控制字符的 8 位編碼表
-
16 位 Unicode 碼 占 兩 個 字 節,用 以 \u 開頭的 4 位 十六進制數表示,范圍從 ‘\u0000’ 到 ’\UFFFF’,(Unicode 碼包括ASCII碼)
一個 16 位的編碼所能產生的字符只有 65 536 個,它是不足以表示全世界所有字符的,因此,Unicode 標準被擴展為 1 112 064 個字符,這些字符都遠遠超過了原來 16 位的限制,它們稱為補充字符(supplementary character)
3.轉義字符
| 轉義序列 | 名稱 | Unicode碼 | 十進制數值 |
|---|---|---|---|
| \b | 退格鍵 | \u0008 | 8 |
| \t | Tab 鍵 | \u0009 | 9 |
| \n | 換行符 | \u000A | 10 |
| \f | 換頁符 | \u000C | 12 |
| \r | 回車符 | \u000D | 13 |
\\ | 反斜杠 | \u005C | 92 |
\" | 雙引號 | \u0022 | 34 |
4.字符型資料與數值型資料之間的轉換
- char 型資料可以轉換成任意一種數值型別,反之亦然,將整數轉換成 char 型資料時,只用到該資料的低十六位,其余部分都被忽略
- 要將一個浮點值轉換成 char 型時,首先將浮點值轉換成 int 型,然后將這個整型值轉換為 char 型
- 如果轉換結果適用于目標變數(范圍不大于),就可以使用隱式轉換方式;否則,必須使用顯式轉換方式
- 0~FFFF 的任何一個十六進制正整數都可以隱式地轉換成字符型資料,而不在此范圍內的任何其他數值都必須顯式地轉換為 char 型
- 所有數值運算子都可以用在 char 型運算元上,如果另一個運算元是一個數字或字符,那么 char 型運算元就會被自動轉換成一個數字
Unicode 轉義序列會在決議代碼之前得到處理:
“\u0022+\ u0022” 并不是個由引號 (\U 0022) 包圍加號構成 的字串,實際 上, \u0022 會在決議之前轉換為",這會得到“+“,要當心注釋中的\u:
// \u000A is a newline
語法錯誤 因為讀程式時\u000A會替換為一個換行符
5.字符的比較和測驗
- 兩個字符可以使用關系運算子進行比較,如同比較兩個數字一樣,這是通過比較兩個字符的 Unicode 值實作的,
- 程式中需要測驗一個字符是數字、字母;大寫字母,還是小寫字母,為了方便,Java 的 Character 類提供了下列方法用于進行字符測驗:
方法 描述 isDigit(ch) 如果指定的字符是一個數字,返冋 true isLetter(ch) 如果指定的字符是一個字母,返冋 true isLetterOrDigit(ch) 如果指定的字符是一個字母或者數字,回傳 true isLowerCase(ch) 如果指定的字符是一個小寫字母,返冋 true isUpperCase(ch) 如果指定的字符是一個大寫字母,返冋 true toLowerCase(ch) 回傳指定的字符的小寫形式 toUpperCase(ch) 回傳指定的宇符的大寫形式
四、布爾型別
boolean 資料型別宣告一個具有值 true 或者 false 的變數
- 布爾型別用來判定邏輯條件,整型值和布林值之間不能進行相互轉換
在C++中,數值甚至指標可以代替 boolean,值0相當于false,Java中不行
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/272285.html
標籤:其他
上一篇:二叉樹面試題-你已經是棵成熟的二叉樹了,要學會自己解題
下一篇:第二章 初識C語言常量
