2015-03-26 4 views
1

Предположим, у меня есть 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.

+3

[_Character литералов может представлять только UTF-16 кодовых блоков (§3.1), т. Е. Они ограничены значениями от '\ u0000' до' \ uffff'. Дополнительные символы должны быть представлены либо как суррогатная пара в последовательности символов, либо как целое число, в зависимости от API, с которым они используются ._] (http://docs.oracle.com/javase/specs/jls/se8/ html/jls-3.html # jls-3.10.4) –

+0

Другими словами, Java 'Char' представляет собой единый кодный код UTF-16 (а не символ), а' String' - это последовательность кодовых UTF-16 , В UTF-16 коды Unicode 'U + 0000' на' U + FFFF' используют 1 код, а в кодовых точках 'U + 10000' на' U + 10FFFF' используются 2 кодовых элемента, называемых суррогатной парой. –

ответ

0

Я считаю, что ваша переменная ch в вашем цикле for - это тип String, и вы хотите получить доступ к каждому персонажу, а затем применить его к значению ascii? Ну, вот что делает ваш код. Я побежал после внесения незначительных исправлений и с помощью String ch = "abcdef" и он дал мне из положить:

0061 
0062 
0063 
0064 
0065 
0066 

Какой именно то, что инструктирует ваш оператор печати:

Литой характер его значение ASCii

-выход четырех символов длинное значение.

Если это помогает, значение ASCII для, б, в, г, д и е в 61, 62, 63, 64, 65 и 66.

+1

Спасибо за ваш ответ, но что, если моя строка содержит символы, которые не могут быть выражены ASCII, им нравятся иностранные символы? Я думаю, что комментарии Сотириоса и Реми прекрасно отвечали на мой вопрос. – SL988

Смежные вопросы