我可以将 Unicode 用作 Java 变量吗?

Can I use Unicode as Java variables?

提问人:Matt 提问时间:4/5/2015 最后编辑:Peter MortensenMatt 更新时间:11/13/2023 访问量:2034

问:

是否可以在 Java 中使用 Unicode 作为变量名?例如:

public static double δ = 1.001;

每当我在 Java 中(来自 IntelliJ IDEA)做这样的事情时,我都会收到一个错误:

“java:预期”

java:表达式非法开始

有没有办法使δ可以用作 Java 中的变量?

如果没有,我可以使用其他选择吗?

Java Unicode UTF-8 javac

评论

1赞 Hovercraft Full Of Eels 4/5/2015
你看到了什么错误?这是真正的 Java 错误,还是 IDE 错误?
0赞 Matt 4/5/2015
我收到类似“java:<identifier> expected”或“java:表达式非法开头”的错误
0赞 user2357112 4/5/2015
当我尝试它时,它有效。也许您有其他错误,或者您的IDE无法处理它。您正在使用什么工具来显示错误消息?
0赞 Matt 4/5/2015
IntelliJ IDEA的。最新版本。gyazo.com/2b85303eb26dc94853f7c4ea53a5cc27
0赞 sampathsris 4/5/2015
虽然这是可能的,但我认为这是一个坏主意。为什么不用于变量名称?怎么可能在没有异国情调的键序列或复制粘贴的情况下键入此变量名称 ()?sigmaδ

答:

3赞 Alupotha 4/5/2015 #1

根据文档,可以:

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

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

·编码:编码

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

javac -encoding UTF-8 HelloWorld.java

如何配置 IDE:

我正在使用 IntelliJ IDEA

添加其他命令行参数:-encoding UTF-8

Enter image description here

成功了!

Enter image description here

评论

1赞 Matt 4/5/2015
我该怎么做?即使在变量名称前面加上 $ 时,我也会遇到错误。
0赞 Alupotha 4/5/2015
只需使用 Unicode 字符声明变量名称并打印,无需额外的库或任何东西
0赞 Matt 4/5/2015
这就是我做一个与你几乎相同的例子时得到的。gyazo.com/2b85303eb26dc94853f7c4ea53a5cc27
0赞 Matt 4/5/2015
如果我用常规文本替换变量名称,它就可以很好地工作。这是一个非常奇怪的错误。
1赞 Holger 4/9/2015
只有当文件实际使用 编码时,指定编译器才有意义。使用 IDE 时,IDE 将知道文件是否被编码,否则编辑器会弄乱内容。换句话说,如果默认编码已经是 ,则不需要指定,如果不是,则指定它会中断编译过程。如果要使用 ,则必须首先查找用于对文件进行编码的 IDE 选项。IDE 应该知道如何将该信息传递给编译器,然后...-encoding UTF-8UTF-8UTF-8UTF-8-encoding UTF-8UTF-8
2赞 Evgeniy Dorofeev 4/5/2015 #2

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

-1赞 Suryaprakash Pisay 9/15/2017 #3

您可以使用Unicode本身(而不仅仅是字符)作为变量,如下图所示。

Enter image description here

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

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

评论

0赞 Peter Mortensen 11/13/2023
请查看 为什么在提问时不上传代码/错误的图片? (例如,“图像只能用于说明无法以任何其他方式阐明的问题,例如提供用户界面的屏幕截图。做正确的事情(它也包括答案)。提前致谢。
0赞 Arfur Narf 11/13/2023
“正如你所看到的,带有\u0020(空格字符)的Sysout没有任何错误。这与写作相同.不打印空格。System.out.println( )