歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java裡String的length方法

Java裡String的length方法

日期:2017/3/1 11:16:00   编辑:Linux編程

首先說一下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 下載見 http://www.linuxidc.com/Linux/2011-10/44569.htm

Copyright © Linux教程網 All Rights Reserved