繁体   English   中英

Java - 将unicode撇号分配给char

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM