关于代码点,代码单位,方法,方法的一些经验
代码点,代码单元,(),()
以下是我在“ Java Core I卷I”中读到的两种代码:
//String greeting = "Hello";
int n = greeting.length(); //is 5
//String greeting = "Hello";
int cpCount = greeting.codePointCount(0, greeting.length());// is 5
该方法将返回使用UTF-16编码表示给定字符串所需的代码单元数。例如:
=“你好”;
int n =。(); //是5
要获取实际长度,即代码点的数量,您可以致电:
int =。(0,。());
- “ Java Core I卷” P48
两个代码的结果是5,这使我非常困惑:与结果相同,第二代码的含义是什么?
根据上下文并查找一些信息,我已经整理了以下内容:
()方法
这。等于代码单元。
返回此字符串的长度。长度等于字符串中的代码单元数量。
()方法
文本范围内的代码。
返回此字符串指定文本范围内的代码点数。
()方法和()方法之间的区别
从返回值中,我们可以看到:()方法返回代码单元,()方法返回代码点,而代码单元和代码点在上面,它们之间有什么区别?
()
()
返回此字符串的长度。长度等于字符串中的代码单元数量。
返回此字符串指定文本范围内的代码点数
public class Test {
public static void main(String []args) {
String greeting = "Hello";

int n = greeting.length();
int cpCount = greeting.codePointCount(0, greeting.length());
System.out.println(n);
System.out.println(cpCount);
}
}
public class Test {
public static void main(String []args) {
String greeting = "Hello";
int n = greeting.length();
int cpCount = greeting.codePointCount(0, greeting.length());
System.out.println(n);
System.out.println(cpCount);
System.out.println("=");
String str = "";
System.out.println(str.length());
System.out.println(str.codePointCount(0, str.length()));
}
}
代码点
在我的理解中,代码点是您实际看到的每个字符,例如A,1,%等,它们都被视为代码点。
代码点
代码点是指与编码表中字符相对应的代码值。在标准中,代码点用十六进制编写,并由u+进行前缀。例如,u+0041是拉丁字母A的代码点。代码点可以分为17个代码飞机。第一个代码平面称为基本多语言平面,其中包括具有从U+0000到U+FFFF的代码点的经典代码,其余16架飞机的代码点从U+10000到U+,包括辅助字符。
- “ Java Core I卷” P33
代码单元
代码单元不一定是您实际看到的每个字符。您实际看到的字符可能包含一个代码单元,或者也可能包括两个代码单元,因为:
Java字符串由一系列CHAR类型组成,Char类型最初用于表示单个字符。但是,由于编码机制,16位char类型不再满足描述所有字符的需求。因此,有些字符需要两个字符值来表示,它们可以与上下文中的突出显示字体相对应:代码单元中一个字符的编码。
代码单元
UTF-16编码使用不同长度的编码来表示所有编码。在基本的多语言平面中,每个字符由16位表示,称为代码单元。辅助字符被编码为一对连续的代码单元。该编码对表示的单个值落在基本多语言平面中未使用的2048个值的范围内,通常称为替代区域。这种设计非常聪明,我们可以快速知道字符是在代码单元中编码还是辅助字符的第一部分或第二部分。
- “ Java Core I卷” P33
标题:Java中码点、代码单元、length()与codePointCount()的困惑解析
链接:https://www.373wan.com/news/xydt/45101.html
版权:文章转载自网络,如有侵权,请联系删除!