我可以用hex字符串文字做什么?

时间:2014-02-28 11:54:30

标签: java hex

我正在学习Java,而且我正在阅读有关hex String literals的书籍章节。它告诉我,我可以用这种格式创建一个十六进制字符串文字:“\ uxxxx”。所以我尝试了这个:

char c = '\u0010';
int x = c;
System.out.println(x);  // prints 16.

首先,为什么以下十六进制字符串文字会导致编译错误?我期待十六进制中的'a'等于十进制10。

char c = '\u000a';

返回以下错误:

..\src\pkgs\main\Main.java:360: error: illegal line end in character literal
                char c = '\u000a';

其次,由于我的新手Java状态,我目前无法理解使用的是十六进制字符串文字。我为什么要使用一个?有人可以请我提供他们使用的“真实世界”示例吗?非常感谢。

3 个答案:

答案 0 :(得分:7)

编译器发出错误的事实是因为编译器会将\u000a解析为CR

char A = '\u000A';

因此变成......

char A ='
';

导致编译时错误。要避免此错误,请始终使用特殊转义字符'\n'(换行符)和'\r'(回车)。

答案 1 :(得分:2)

如前所述,Unicode转义实际上是processed during compilation as a replacement

  

因为非常早地处理Unicode转义,所以为值为换行符(LF)的字符文字写'\ u000a'是不正确的。 Unicode转义\ u000a在转换步骤1(§3.3)中转换为实际换行符,换行符在步骤2(§3.4)中成为LineTerminator,因此字符文字在步骤3中无效。相反,应该使用转义序列'\ n'(§3.10.6)。同样,为值为回车(CR)的字符文字写'\ u000d'是不正确的。相反,请使用'\ r'。

Unicode转义的这个方面不仅限于字符文字。例如,以下内容将打印“hello world”:

// \u000A System.out.println("hello world");

获取转义之外的特殊字符的另一种方法是使用整数文字:

static final char NUL = 0x0000;

至于它们的用处,因为否则你必须复制和粘贴特殊字符或用某些键盘组合键入它们。另一个原因是某些角色没有合适的视觉表现。例如null,escape,backspace和delete。还有代码点7,铃声字符,它实际上是计算机在打印时发出蜂鸣声的指令。

答案 2 :(得分:0)

Java中的Char为2个字节,因此您可以使用char打印Unicode字符。 因此,如果您知道unicode字符代码,那么您可以将其存储为char中的十六进制文字,并且您可以使用其他语言字符。

您可以访问此链接: http://voices.yahoo.com/how-print-unicode-characters-java-12507717.html

了解十六进制文字的使用