Предположим, у меня есть String
. Если я это сделаю:Какова ценность Char в java?
for (int index = 0; index < ch.length(); index++) {
char c = ch.charAt(index);
System.out.println(String.format("%04x", (int) c));
}
Каким будет выход?
Я пробовал a
и получил 0061
, что похоже на значение UTF-8/ASCII A
. Затем я попробовал и получил
d800 dd51
, который, кажется, не является значением UTF.
Просто интересно, что такое int значение Char
в Java.
[_Character литералов может представлять только UTF-16 кодовых блоков (§3.1), т. Е. Они ограничены значениями от '\ u0000' до' \ uffff'. Дополнительные символы должны быть представлены либо как суррогатная пара в последовательности символов, либо как целое число, в зависимости от API, с которым они используются ._] (http://docs.oracle.com/javase/specs/jls/se8/ html/jls-3.html # jls-3.10.4) –
Другими словами, Java 'Char' представляет собой единый кодный код UTF-16 (а не символ), а' String' - это последовательность кодовых UTF-16 , В UTF-16 коды Unicode 'U + 0000' на' U + FFFF' используют 1 код, а в кодовых точках 'U + 10000' на' U + 10FFFF' используются 2 кодовых элемента, называемых суррогатной парой. –