【问题标题】:Using Unicode as Java Variables?使用 Unicode 作为 Java 变量?
【发布时间】:2015-04-05 03:49:34
【问题描述】:

我想知道是否可以在 java 中使用 unicode 作为变量名。例如:

public static double δ = 1.001;

每当我在 java 中做这样的事情时,我都会得到一个错误。有没有办法让δ可以在java中用作变量?

如果没有,我可以使用其他替代方法吗?

【问题讨论】:

  • 您看到了什么错误?是真正的 Java 错误,还是 IDE 错误?
  • 我收到类似“java: expected”或“java:非法开始表达式”的错误
  • It works when I try it. 可能您还有其他错误,或者您的 IDE 无法处理。您正在使用什么工具显示错误消息?
  • IntelliJ IDEA。最新版本。 gyazo.com/2b85303eb26dc94853f7c4ea53a5cc27
  • 虽然有可能,但我认为这是个坏主意。为什么不使用sigma 作为变量名?如果没有奇异的键序列或复制粘贴,任何人怎么能键入这个变量名 (δ)?

标签: java unicode utf-8 javac


【解决方案1】:

根据doc是可以的

变量名区分大小写。变量的名称可以是任何合法标识符 — 无限长度的 Unicode 字母 和数字序列,以字母、美元符号“$”或下划线字符“”开头。然而,惯例是始终以字母开头变量名,而不是“$”或“”。此外,按照惯例,从不使用美元符号字符。


**如果它不工作,用-encoding选项编译文件(通常没有-encoding它应该工作。这不是必要的步骤首先检查没有这个)**

-encoding : 编码 设置源文件编码名称,如 EUC-JP 和 UTF-8。如果不指定-encoding,则使用平台默认转换器。

javac -encoding UTF-8 HelloWorld.java

如何配置您的 IDE:

我正在使用 Intellij 想法:

添加额外的命令行参数: -encoding UTF-8

成功了!

【讨论】:

  • 我该怎么做?即使在变量名前面加上 $ 也会出现错误。
  • 只需使用 Unicode 字符声明变量名并打印不需要额外的库或任何东西
  • 这是我做一个和你的几乎一样的例子时得到的。 gyazo.com/2b85303eb26dc94853f7c4ea53a5cc27
  • 如果我用普通文本替换变量名,它工作得很好。这是一个非常奇怪的错误。
  • 查了一下,基本一样。
【解决方案2】:

这是一个合法的名称。来自 JLS 3.8 标识符 - 字母和数字(用于标识符)可能来自整个 Unicode 字符集,它支持当今世界上使用的大多数书写脚本,包括中文、日文和韩文的大型集。这允许程序员在他们的程序中使用以他们的母语编写的标识符。

【讨论】:

    【解决方案3】:

    您可以使用 unicode 本身(不仅仅是一个字符)作为变量,如下面提到的屏幕截图。

    1. 您可以看到带有 \u0020(空格字符)的 Sysout 没有错误。
    2. 下面我们使用 unicode 创建一个字符串变量(P),如果您通过删除最后一个 Sysout 运行程序,它甚至可以在控制台中打印“Hi”。
    3. 尝试打印未定义的 unicode 字符 (Q -- \u0051) 时会出现编译错误。

    它看起来很奇怪,但正如 Evgeniy Dorofeev 所提到的,java 支持它。

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多