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