搜尋
首頁JavaJava基礎java中char佔用多少位元組

java中char佔用多少位元組

Oct 26, 2020 am 09:19 AM
charjava

java中char所佔用的位元組:1、java中內碼中的char使用UTF16的方式編碼,一個char佔用兩個位元組;2、java中外碼中char使用UTF8的方式編碼,一個字元佔用【1~6】個位元組。

java中char佔用多少位元組

在討論這個問題之前,我們需要先區分unicode和UTF。

  • unicode :統一的字元編號,僅提供字元與編號間對映。符號數量不斷增加,已超百萬。詳細:[https://zh.wikipedia.org/zh-cn/Unicode]

  • #UTF :unicode轉換格式 (unicode transformation format) 。定義unicode中編號的編碼方式。 utf8和utf16便是其中兩種實現方式。其中utf8為變長表示,長度可能時1~6個位元組;utf16為變長表示,長度可能是2或4個位元組。詳細:UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]

#接著,要分辨內碼(internal encoding)和外碼(external encoding)。

  • 內碼 :某種語言運行時,其char和string在記憶體中的編碼方式。

  • 外碼 :除了內碼,都是外碼。

要注意的是,原始碼編譯產生的目標程式碼檔案(執行檔或class檔案)中的編碼方式屬於外碼。

先看內碼

JVM中內碼採用UTF16。早期,UTF16採用固定長度2位元組的方式編碼,兩個位元組可以表示65536種符號(其實真正能表示要比這個少),足以表示當時unicode中所有字元。但是隨著unicode中字符的增加,2個位元組無法表示所有的字符,UTF16採用了2位元組或4位元組的方式來完成編碼。 Java為因應這種情況,考慮到向前相容的要求,Java用一對char來表示那些需要4位元組的字元。所以,java中的char是佔用兩個字節,只不過有些字元需要兩個char來表示。

外碼

Java的class檔案採用UTF8來儲存字符,也就是說,class中字元佔1~6個位元組。

Java序列化時,字元也採用UTF8編碼,佔1~6個字元。

總結:

  • java中內碼(運行記憶體)中的char使用UTF16的方式編碼,一個char佔用兩個字節,但是某些字元需要兩個char來表示。所以,一個字元會佔用2個或4個位元組。

  • java中外碼中char使用UTF8的方式編碼,一個字元佔用1~6個位元組。

  • UTF16編碼中,英文字元佔兩個位元組;絕大多數漢字(尤其是常用漢字)佔用兩個位元組,個別漢字(在後期加入unicode編碼的漢字,一般是極少用到的生僻字)佔用四個位元組。

  • UTF8編碼中,英文字元佔用一個位元組;絕大多數漢字佔用三個位元組,個別漢字佔用四個位元組。

EOF

相關免費學習推薦:java基礎教學

#

以上是java中char佔用多少位元組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Java中有哪些不同的垃圾收集算法(串行,並行,CMS,G1,ZGC)?Java中有哪些不同的垃圾收集算法(串行,並行,CMS,G1,ZGC)?Mar 14, 2025 pm 05:06 PM

本文討論了各種Java垃圾收集算法(串行,並行,CMS,G1,ZGC),它們的性能影響和適合大量堆的應用。

什麼是Java虛擬機(JVM),它在內部如何工作?什麼是Java虛擬機(JVM),它在內部如何工作?Mar 14, 2025 pm 05:05 PM

本文討論了Java虛擬機(JVM),詳細介紹了其在不同平台運行Java程序中的作用。它說明了JVM的內部流程,密鑰組件,內存管理,垃圾收集和性能Optimizatio

如何使用Java的Nashorn Engine用JavaScript腳本?如何使用Java的Nashorn Engine用JavaScript腳本?Mar 14, 2025 pm 05:00 PM

Java的Nashorn Engine可以在Java應用程序中啟用JavaScript腳本。關鍵步驟包括設置Nashorn,管理腳本和優化性能。主要問題涉及安全性,內存管理和未來兼容性

如何使用Java的Try-with-Resources語句進行自動資源管理?如何使用Java的Try-with-Resources語句進行自動資源管理?Mar 14, 2025 pm 04:59 PM

Java的Try-with-Resources通過自動關閉文件流或數據庫連接等資源來簡化資源管理,從而提高代碼可讀性和可維護性。

如何使用Java的枚舉來表示固定的值集?如何使用Java的枚舉來表示固定的值集?Mar 14, 2025 pm 04:57 PM

Java枚舉代表固定的值集,通過自定義方法和構造函數提供類型安全性,可讀性和其他功能。它們增強了代碼組織,可用於開關語句中以進行有效的價值處理。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器