首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Java允许在源代码中使用转义的unicode字符?

为什么Java允许在源代码中使用转义的unicode字符?
EN

Stack Overflow用户
提问于 2010-12-15 16:50:22
回答 2查看 11K关注 0票数 66

I recently learned指出统一码在Java源代码中是允许的,而不仅仅是作为统一码字符(例如,double π = Math.PI; ),但也作为转义序列(例如,double \u03C0 = Math.PI; )。

第一个变体对我来说很有意义-它允许程序员用他们选择的国际语言命名变量和方法。然而,我没有看到第二种方法的任何实际应用。

下面是用Java 6和NetBeans 6.9.1测试的几段代码来说明用法:

此代码将打印3.141592653589793

代码语言:javascript
复制
public static void main(String[] args) {
    double π = Math.PI;
    System.out.println(\u03C0);
}

说明:π和\u03C0是相同的Unicode字符

此代码不会打印任何内容

代码语言:javascript
复制
public static void main(String[] args) {
    double π = Math.PI; /\u002A
    System.out.println(π);

    /* a comment */
}

说明:上面的代码实际编码:

代码语言:javascript
复制
public static void main(String[] args) {
    double π = Math.PI; /*
    System.out.println(π);

    /* a comment */
}

它注释掉了印刷文稿。

仅从我的示例中,我就注意到了该语言特性的一些潜在问题。

首先,糟糕的程序员可能会使用它来秘密注释掉一些代码,或者创建多种方法来识别同一个变量。也许还有其他可怕的事情是我没有想过的。

其次,IDE之间似乎缺乏支持。NetBeans和Eclipse都没有为示例提供正确的代码突出显示。事实上,NetBeans甚至标记了一个语法错误(尽管编译不是问题)。

最后,这个特性的文档很少,也没有被普遍接受。为什么程序员要在他的代码中使用其他程序员无法识别和理解的东西呢?事实上,我甚至在Hidden Java Features question上找不到任何关于这方面的东西。

我的问题是:

为什么Java允许在语法中使用转义的Unicode序列?这个特性的一些“优点”是什么让它保持了Java的一部分,尽管它有很多“缺点”?

EN

回答 2

Stack Overflow用户

发布于 2010-12-15 16:54:52

\u03C0编码的好处在于,它不太可能被具有错误编码设置的文本编辑器忽略。例如,我的软件中的一个bug是由错误配置的文本编辑器意外地从UTF-8 é转换为MacRoman é引起的。通过指定Unicode代码点,您的意思是完全明确的。

票数 9
EN

Stack Overflow用户

发布于 2010-12-15 16:58:17

首先,谢谢你的问题。我觉得这很有趣。其次,原因是java源文件是一个可以使用各种字符集的文本。例如,Eclipse中的默认字符集是Cp1255。此添加不支持像π这样的字符。我认为他们认为程序员必须在不支持unicode的系统上工作,并希望允许这些程序员创建支持unicode的软件。这就是支持\u符号的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4448180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档