Java裡String的length方法__Java

來源:互聯網
上載者:User
 

首先說一下char類型:
char類型用來表示單個字元。要想弄清楚char類型,就必須瞭解Unicode編碼錶。
在設計Java時決定採用16位的Unicode字元集。能表示65536個字元。
十分遺憾,經過一段時間,不可避免的事情發生了。Unicode字元超過了65536個。
(主要原因是增加了大量的漢語、日語、韓語這樣的表意文字),也就是16位的
char類型已經不能滿足所有的Unicode字元的需要了。

代碼點(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代碼點。在基本的多語言層級中,
每個字元用16位表示,通常被稱為代碼單元(code unit)。而輔助字元採用一對連續
的代碼單元進行編碼。

Java中得代碼點與代碼單元:

Java字串由char序列組成。字元資料類型是一個採用UTF-16編碼錶示Unicode代碼點
的代碼單元。
大多數的常用Unicode字元使用一個代碼單元就可以表示,
而輔助字元需要一對代碼單元表示。

length方法將返回採用UTF-16編碼錶示的給定字串所需要的代碼單元數量。
String greeting = "Hello";
int n = greeting.length(); //is 5
要想得到實際的長度,即代碼點數量,可以調用:
int cpCount = greeting.codePointCount(0, greeting.length());

 

摘自《Java核心技術》卷I

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.