[英]Java - Assign unicode apostrophe to char
我想将aphostrophe的值赋给char:
char a = '\'';
但是我想使用untropode版本的撇号(\\ u0027)来保持它与我的代码一致:
char a = '\u0027';
但这样做会给出一个错误,说“未封闭的字符文字”。
如何在代码中使用unicode代码时如何进行此分配?
原因是\'
不起作用的是unicode转义是由编译器很早就处理的,当然,它最终是'
- 终止文字。 编译器实际上看到了这个:
char a = ''';
......这自然是个问题。 JLS在第3.10.4节 ( 字符文字 )中讨论了与换行相关的内容。
坦率地说,我觉得你最好写作
char a = '\'';
...但char
是一种数字类型,所以你可以这样做:
char a = 0x0027;
当然,你可以这样做:
char a = "\u0027".charAt(0);
......但我认为我们都同意这有点矫枉过正。 ;-)
哦,或查看格雷格的答案 : char a = '\\\'';
( \\
当然是反斜杠 - 所以编译器会看到'\\''
)。
你也可以这样做
char a = '\u005c\u0027';
其中\\ u005c是\\的Unicode
在javac做任何其他事情之前,它首先将所有\\ u ####转换为char。 所以你的代码相当于
char a = ''';
这就是为什么它不编译。
\\ u ####不只是char / string文字,你可以在任何地方使用它,例如在变量名中。
然而,人们很少在标识符中使用非拉丁字符; 如果有人这样做,他可能会使用他的本土字符集,他也不需要\\ u ####。
因此,除了字母/字符串文字之外,我们从未真正看到\\ u ####,这给未出现的人留下了错误的印象。
如果有时间机器,我们应该杀死这个功能,因为它很混乱而且没有使用。
这是另一种选择,但实际上是一种矫枉过正:
char c = "\u0027".charAt(0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.