复习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++;
            }
        }
    }
}

你可能感兴趣的:(java,codePoint,codeunit)