在Java代码中使用特殊字符是否安全?

3

我的语言是葡萄牙语,因此我需要编写一个方法doSomething(),在葡萄牙语中称为façaAlgo()

Java允许我在代码中使用特殊字符,但这样安全吗?这样做有什么缺点?或者我可以放心使用吗?


2
如果编译和运行都没有问题的话,那么就应该没事了。因为在编译之后,变量名并不重要,所以也不应该会有性能损失。 - Colonel Thirty Two
3个回答

11

这是有效的Java代码,但是在以下情况下可能会遇到问题:

  • 在计算机之间传输源代码
  • 编译代码
  • 编辑代码

几乎所有软件都可以处理ASCII编码,大多数编码要么与ASCII兼容,要么编辑器会正确猜测你使用的是ASCII编码。然而,当你开始使用ASCII之外的字符时,你需要确保所有工具都使用相同的编码方式,否则不同的工具会认为你的代码中有不同的字符。

如果你确实使用了非ASCII字符,我建议使用UTF-8作为编码方式 - 这种编码方式现在基本上被所有软件支持。确保你正在使用的IDE默认使用UTF-8创建新文件,并且期望现有文件为UTF-8格式。然后如果你从命令行编译代码,请使用“-encoding”命令行参数来指定编码方式。


1
如果我可以补充一下,这将很快成为一个噩梦。UI编码与文件存在足够的问题(错误的编码,某些库不支持它等)。我建议仅在UI中使用非ASCII字符,并保持代码不含有它。在您的代码可读性上,使用facaAlgo()而不是façaAlgo()可能不会产生太大影响。 - JFPicard
1
这个问题也会发生在字符串常量中,比如向用户显示消息:JOptionPane.showMessageDialog(null, "Faça algo!"); 在这种情况下,我们无法总是避免在代码中使用非 ASCII 字符。 - Mateus Viccari
2
@MateusViccari你可以通过使用Unicode转义来避免非ASCII字符:"Fa\u00e7a algo!",但这对人来说当然是不可读的... - Jesper
@Mateus:通常你会将用户可见的文本放入属性文件中,以便进行国际化。但是,如果你将字符串放在源代码中,你也会面临相同的潜在问题。 - Jon Skeet

3
回答你的问题:是的。请参考Oracle教程
变量名区分大小写。变量名可以是任何合法标识符,即以字母、美元符号"$"或下划线字符"_"开头的Unicode字母和数字序列,长度不限。然而,惯例是始终以字母而不是"$"或"_"开头命名变量。此外,按照惯例,根本不使用美元符号字符。在某些情况下,自动生成的名称可能会包含美元符号,但应避免使用美元符号作为变量名。下划线字符也存在类似的约定;虽然用下划线字符开头的变量名在技术上是合法的,但这种做法是不被推荐的。不允许有空格。

1
Java在源文件中支持Unicode。如果您将来遇到问题,可以在编译时指定编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接