相关疑难解决方法(0)

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

最近了解到,Java源代码中的Unicode不仅可以作为Unicode字符(例如double ? = Math.PI;),还可以作为转义序列(例如double \u03C0 = Math.PI;).

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

以下是一些用于说明用法的代码,使用Java SE 6和NetBeans 6.9.1进行了测试:

此代码将打印出3.141592653589793

public static void main(String[] args) {
    double ? = Math.PI;
    System.out.println(\u03C0);
}
Run Code Online (Sandbox Code Playgroud)

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

此代码不会打印任何内容

public static void main(String[] args) {
    double ? = Math.PI; /\u002A
    System.out.println(?);

    /* a comment */
}
Run Code Online (Sandbox Code Playgroud)

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

public static void main(String[] args) {
    double ? = Math.PI; /*
    System.out.println(?);

    /* a comment */
}
Run Code Online (Sandbox Code Playgroud)

哪个评论打印出来的声明.

仅从我的示例中,我注意到此语言功能存在许多潜在问题.

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

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

最后,此功能的记录很少,并且不被普遍接受.为什么程序员会在他的代码中使用其他程序员无法识别和理解的东西?事实上,我甚至在Hidden Java Features问题上找不到这个. …

java unicode language-features

64
推荐指数
2
解决办法
9849
查看次数

标签 统计

java ×1

language-features ×1

unicode ×1