簡體   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