复习Java核心技术——卷1,第3章,Code Point

趁着国庆节放假,好好复习一下Java核心技术这本好书。

/**
* 实验表明,GBK比UTF-8所需要的codepoint更多,和UTF-16差不多。
* 一个代码点(code point)可能有一到两个代码单元(code unit)
* @author Roy Zhang
*
*/
public class TestCodePoint
{
public static void main(String[] args)
{
String greeting = "Hello★";
int n = greeting.length();
System.out.println(n); // is 5.

int cpCount = greeting.codePointCount(0, greeting.length());
System.out.println(cpCount); // is 5.

char first = greeting.charAt(0);
System.out.println(first); // is H
char last = greeting.charAt(greeting.length() - 1);
System.out.println(last); // UTF-16 and GBK will show ★

for (int i = 0; i < greeting.codePointCount(0, greeting.length()); i++)
{
int index = greeting.offsetByCodePoints(0, i);
int cp = greeting.codePointAt(index);
System.out.println(cp);// they are: 72, 101, 108, 108, 111, 9733
}

for (int i = 0; i < greeting.codePointCount(0, greeting.length()); )
{
int cp = greeting.codePointAt(i);
System.out.println(greeting.charAt(i));// they are: H, e, l, l, o, ★
if (Character.isSupplementaryCodePoint(cp))
{
// It does not work.
i = i + 2;
}
else
{
i++;
}
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值