天天看點

java中string.length_Java裡String的length方法

首先說一下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中string.length_Java裡String的length方法