Java?八種基本數(shù)據(jù)類型最新整理
一、比特(bit)和字節(jié)(Byte)
1、定義與換算關(guān)系
- 比特(bit)是計(jì)算機(jī)中
最小的數(shù)據(jù)單位,表示二進(jìn)制的一位,只能取0或1。其英文縮寫為小寫字母b(如100b) - 字節(jié)(Byte)是計(jì)算機(jī)中
基本的數(shù)據(jù)存儲單位,1字節(jié)由8個比特組成,即1 Byte = 8 bit。其縮寫為大寫字母B(如100B)
| 單位 | 縮寫 | 大小 |
|---|---|---|
| 1 字節(jié) | 1 Byte (B) | 8 bit (b) |
| 1 千字節(jié) | 1 KB | 1024 Bytes |
| 1 兆字節(jié) | 1 MB | 1024 KB |
| 1 吉字節(jié) | 1 GB | 1024 MB |
| 1 太字節(jié) | 1 TB | 1024 GB |
2、應(yīng)用場景差異
- 比特通常用于衡量網(wǎng)絡(luò)傳輸速率(如帶寬)
- 例如100Mbps(兆比特每秒)表示每秒傳輸?shù)谋忍財(cái)?shù),1兆 = 1,000,000(百萬)
- 日常十進(jìn)制換算:100Mbps寬帶的理論最高下載速度為100 ÷ 8 = 12.5 MB/s 100 ÷ 8 = 12.5 \text{MB/s}100÷8=12.5MB/s
- 使用二進(jìn)制換算:100Mbps寬帶為100 , 000 , 000 ÷ 1024 ÷ 1024 ÷ 8 ≈ 11.92 MB/s 100,000,000 ÷ 1024 ÷ 1024 ÷ 8 ≈ 11.92 \text{MB/s}100,000,000÷1024÷1024÷8≈11.92MB/s
- 字節(jié)則用于表示數(shù)據(jù)存儲容量或傳輸量
- 例如文件大小(如10MB)、內(nèi)存容量等
- 下載速度也常用kB/s或MB/s表示
二、各類型詳解

1、整數(shù)類型:byte、short、int、long
- 整數(shù)字面量默認(rèn)類型為int
- 定義long類型常量須后加‘l’或‘L’后綴
- 必須加L/l:當(dāng)數(shù)值超出int范圍時
- 建議加L:即使數(shù)值在int范圍內(nèi),也推薦添加大寫L以提高代碼可讀性
- 避免使用l:防止與數(shù)字1混淆
- byte占用8個bit位,共28=256個表達(dá)方式,負(fù)數(shù)(128個):-1~-128;正數(shù)(128個):0~127
- byte和short常用于節(jié)省內(nèi)存的場景,如處理文件或網(wǎng)絡(luò)數(shù)據(jù)流
| 類型 | 位數(shù) | 取值范圍 | 默認(rèn)值 | 包裝類 |
|---|---|---|---|---|
| byte | 8 | -27 ~ 27-1(-128~127) | 0 | Byte |
| short | 16 | -215 ~ 215-1(-32768 ~ 32767) | 0 | Short |
| int | 32 | -231 ~ 231-1(約21億多) | 0 | Integer |
| long | 64 | -263 ~ 263-1(-9223372036854775808 ~ 9223372036854775807) | 0L | Long |
不同整數(shù)類型的存儲空間和表示數(shù)值的范圍:

2、浮點(diǎn)類型:float、double


關(guān)于精度舉例說明:
float f = 0.123456789f; double d = 0.123456789123456789; System.out.println(f); // 輸出:0.12345679(只有前 7 位是可靠的) System.out.println(d); // 輸出:0.12345678912345678(保留了更多有效數(shù)字)
關(guān)于浮點(diǎn)型精度的說明:
- 并不是所有的小數(shù)都能可以精確的用二進(jìn)制浮點(diǎn)數(shù)表示
- 二進(jìn)制浮點(diǎn)數(shù)不能精確的表示0.1、0.01、0.001這樣10的負(fù)次冪
3、字符類型:char
- Java中的char類型是固定長度的2字節(jié),即使是中文、英文或其他字符
- 常用漢字:在Java內(nèi)存中用一個char表示,占2個字節(jié)
- 擴(kuò)展?jié)h字(生僻字):超出char表示范圍,用兩個char表示,占4個字節(jié)
- 如果你將漢字以UTF-8編碼形式存儲(如寫入文件或通過網(wǎng)絡(luò)傳輸),一個漢字通常會占用3個字節(jié)(生僻字可能是4個字節(jié))
| 類型 | 位數(shù) | 取值范圍 | 默認(rèn)值 | 包裝類 |
|---|---|---|---|---|
| char | 16 | 0 ~ 65535(Unicode) | ‘\u0000’ | Character |
- char類型是可以
進(jìn)行運(yùn)算的。因?yàn)閏har類型都對應(yīng)有Unicode碼,可以看做是一個數(shù)值
char c12 = 'a'; // ASCII對應(yīng)數(shù)字97 char c13 = 65; // 這里就是ascii碼65,對應(yīng)字符A System.out.println(c12+c13); // 97+65=162
3.1、字符字面量(最常見)
最常見的寫法,表示單個字符
//使用一對''表示,內(nèi)部有且僅有一個字符 char c1 = 'a'; char c2 = '中'; char c3 = '1'; char c4 = '%'; char c5 = 'γ'; //編譯不通過 //char c6 = ''; //char c7 = 'ab';
3.2、 Unicode轉(zhuǎn)義表示(\uXXXX 格式)
- ‘使用
\u開頭加4位十六進(jìn)制表示Unicode編碼 - 如下unicode表,
\u + 縱坐標(biāo) + 橫坐標(biāo)如:\u0040表示為@

3.3、 轉(zhuǎn)義字符
- 常見控制字符,如換行、制表符等
| 轉(zhuǎn)義字符 | 說明 | Unicode表示方式 |
|---|---|---|
\n | 換行符 | \u000a |
\t | 制表符 | \u0009 |
\" | 雙引號 | \u0022 |
\' | 單引號 | \u0027 |
\\ | 反斜線 | \u005c |
\b | 退格符 | \u0008 |
\r | 回車符 | \u000d |
3.4、 整數(shù)轉(zhuǎn)換
使用整數(shù)轉(zhuǎn)換為對應(yīng)的字符
char c = 65; // ASCII 碼 65 對應(yīng) 'A' System.out.println(c); // 輸出: A char ch = 0x4F60; // 十六進(jìn)制 Unicode 表示 '你' System.out.println(ch); // 輸出: 你

4、布爾類型:boolean
| 類型 | 位數(shù) | 取值范圍 | 默認(rèn)值 | 包裝類 |
|---|---|---|---|---|
| boolean | 1 | true/false | false | Boolean |
Java 語言規(guī)范未強(qiáng)制規(guī)定 boolean 的大小,僅表示其表示 1 位信息,具體實(shí)現(xiàn)由虛擬機(jī)決定。這導(dǎo)致不同 JVM 的差異:
- 通常占用 4 字節(jié):根據(jù)《Java 虛擬機(jī)規(guī)范》,單獨(dú)使用的 boolean 值在編譯時會被轉(zhuǎn)換為int 類型(占用 4 字節(jié)),以提高 32 位處理器的存取效率。例如,局部變量或方法棧中的 boolean 變量可能按 int 處理
- 可能占用 1 字節(jié):部分虛擬機(jī)(如 HotSpot)在存儲對象的成員變量時,可能將 boolean 字段壓縮為 1 字節(jié)。例如,Oracle 的某些 JVM 實(shí)現(xiàn)中,boolean 字段實(shí)際占用 1 字節(jié)
- 數(shù)組元素:統(tǒng)一為1 字節(jié)(編碼為 byte 數(shù)組)
三、基本數(shù)據(jù)類型轉(zhuǎn)換
1、自動類型轉(zhuǎn)換(隱式轉(zhuǎn)換)
- 將較小的數(shù)據(jù)類型轉(zhuǎn)換為較大的數(shù)據(jù)類型(不會丟失信息)。由編譯器
自動完成 - char與short同級,但不可直接轉(zhuǎn)換,需強(qiáng)制轉(zhuǎn)換

示例:
int a = 10; long b = a; // 自動轉(zhuǎn)換:int → long double c = b; // 自動轉(zhuǎn)換:long → double int x = 5; double y = x + 3.14; // 結(jié)果為 double 類型 char ch = 'A'; int code = ch; // 自動轉(zhuǎn)換:char → int(輸出 Unicode 值 65)
2、強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)
- 將大范圍類型轉(zhuǎn)換為小范圍類型時,必須使用
強(qiáng)制類型轉(zhuǎn)換,可能會造成精度丟失或溢出
精度丟失示例:
double d = 123.456; int i = (int) d; // 強(qiáng)制轉(zhuǎn)換:double → int(結(jié)果為123,精度丟失)
精度溢出示例:
溢出是指一個數(shù)值超出了該數(shù)據(jù)類型所能表示的范圍,導(dǎo)致結(jié)果不正確甚至反方向回繞- 想象你有一個 3 位的計(jì)數(shù)器,只能表示 0 到 999,如果你加到 1000,它就回到了 000——這就是溢出
byte b = 127; // byte 的最大值是 127 b = (byte)(b + 1); // 加1后會溢出,結(jié)果是 -128 long l = 3000000000L; int j = (int) l; // 強(qiáng)制轉(zhuǎn)換:long → int(溢出,結(jié)果為-1294967296)
3、不同數(shù)據(jù)類型運(yùn)算
byte, short, char 運(yùn)算 ? 自動變成 int
byte a = 10; byte b = 20; // byte c = a + b; // 編譯錯誤:結(jié)果是 int int c = a + b; // 正確 //byte、short之間做運(yùn)算 byte b3 = 12; short s1 = 10; //short s2 = b3 + s1; // 編譯不通過 需要用int來接收 int i4 = b3 + s1; // 正確
int 與 long 運(yùn)算 ? 提升為 long
int i = 1000; long l = 2000L; long result = i + l; // i 自動轉(zhuǎn)為 long
int 與 float 運(yùn)算 ? 提升為 float
int i = 5; float f = 2.5f; float res = i + f; // i 轉(zhuǎn)為 float,結(jié)果是 7.5
float 與 double 運(yùn)算 ? 提升為 double
float f = 3.5f; double d = 1.2; double res = f + d; // f 轉(zhuǎn)為 double,結(jié)果是 4.7
到此這篇關(guān)于Java 八種基本數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)Java 八種基本數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java數(shù)據(jù)類型(八種基本數(shù)據(jù)類型+四種引用類型)以及數(shù)據(jù)類型轉(zhuǎn)換
- 八種Java中的基本數(shù)據(jù)類型詳解
- Java中的八種基本數(shù)據(jù)類型詳解
- Java基本數(shù)據(jù)類型與類型轉(zhuǎn)換實(shí)例分析
- Java基礎(chǔ)教程之八大基本數(shù)據(jù)類型
- Java的基本數(shù)據(jù)類型和運(yùn)算方法(必看篇)
- Java中八種基本數(shù)據(jù)類型的默認(rèn)值
- JAVA基礎(chǔ)之基本數(shù)據(jù)類型全面解析
- java的基本數(shù)據(jù)類型及屬性
相關(guān)文章
SpringBoot請求映射的五種優(yōu)化方式小結(jié)
在Spring?Boot應(yīng)用開發(fā)中,請求映射(Request?Mapping)是將HTTP請求路由到相應(yīng)控制器方法的核心機(jī)制,合理優(yōu)化請求映射不僅可以提升應(yīng)用性能,還能改善代碼結(jié)構(gòu),增強(qiáng)API的可維護(hù)性和可擴(kuò)展性,本文將介紹5種Spring?Boot請求映射優(yōu)化方式,需要的朋友可以參考下2025-06-06
解決異常FileNotFoundException:class path resource找不到資源文件的問題
今天小編就為大家分享一篇關(guān)于解決異常FileNotFoundException:class path resource找不到資源文件的問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
如何通過Java實(shí)現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片
在Java中,將PDF文件轉(zhuǎn)換為高質(zhì)量的圖片可以使用不同的庫,其中最常用的庫之一是?Apache?PDFBox,下面我們就來看看這個庫的具體使用吧2024-10-10
Java中wait()和sleep()區(qū)別小結(jié)
在Java多線程編程中,wait()和 sleep()是兩個常用的線程控制方法,但它們在工作原理、使用場景和效果上有顯著區(qū)別,本文就來詳細(xì)的介紹一下兩者的差異,感興趣的可以了解一下2025-10-10
SpringCloud手寫Ribbon實(shí)現(xiàn)負(fù)載均衡
這篇文章主要介紹了SpringCloud手寫Ribbon實(shí)現(xiàn)負(fù)載均衡的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
java Socket無法完全接收返回內(nèi)容的解決方案
這篇文章主要介紹了java Socket無法完全接收返回內(nèi)容的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
springdoc openapi 接口轉(zhuǎn)換為JMeter測試計(jì)劃實(shí)踐指南
本文介紹了基于Springdoc-openapi自動暴露OpenAPI文檔,并通過OpenAPIGenerator生成JMeter測試計(jì)劃的方法,詳細(xì)步驟包括啟動服務(wù)、驗(yàn)證OpenAPI文檔可用性、使用OpenAPIGenerator生成JMeter腳本以及安裝JMeter,感興趣的朋友一起看看2026-04-04
通過實(shí)例解析Java類初始化和實(shí)例初始化
這篇文章主要介紹了通過實(shí)例解析Java類初始化和實(shí)例初始化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

