为什么在Java变量名称中不允许特殊字符($
,_
除外)?java中变量的命名限制
回答
情况并非如此 - 许多特殊字符实际上对标识符有效。它被定义为in the JLS #3.8:
标识符是一个无限长的Java字母和Java数字序列,其中第一个必须是Java字母。
[...]
“Java字母”是方法Character.isJavaIdentifierStart(int)
返回true的字符。
“Java字母或数字”是方法Character.isJavaIdentifierPart(int)
返回true的字符。
例如,这是一个有效的变量名:
String sçèêûá¢é£¥ = "bc";
你可以看到所有与这个简单的代码的有效字符:
public static void main(String args[]) {
for (int i = 0; i < Character.MAX_VALUE; i++) {
if (Character.isJavaIdentifierPart(i)) {
System.out.println("i = " + i + ": " + (char) i);
}
}
}
PS:很好的例子on @PeterLawrey's blog
+1为链接;) –
我认为你的例子会更清晰,如果变量名称以“特殊”字符开头,如:Stringçèêûáé飬=“bc “; – cquezel
以下代码全部在Java中有效...
int Δ = 1;
double π = 3.141592;
String 你好 = "hello";
Δ++;
System.out.println(Δ);
我想说那些变量名称是很特殊的字符。
实际上有一个被允许在Java中的标识符,因为它是一个巨大的数字特殊字符。例如,你可以有充分的货币符号,和所有10个连续符(不只是_)
if(⁀ ‿ ⁀ == ⁀ ⁔ ⁀ || ¢ + ¢== ₡)
更奇怪的是,你可以有哪些是不可见的字符或安排向后打印的文本。
以下程序在其标识符中有\u202e
导致其“特殊”外观。
for (char ch = 0; ch < Character.MAX_VALUE; ch++)
if (Character.isJavaIdentifierPart(ch) && !Character.isJavaIdentifierStart(ch))
System.out.printf("%04x <%s>%n", (int) ch, "" + ch);
这打印编译和运行的标识符中允许的所有特殊字符。
http://vanillajava.blogspot.co.uk/2012/09/hidden-code.html
http://vanillajava.blogspot.co.uk/2012/08/uses-for-special-characters-in-java-code.html
+1爱的第一个变量名:) –
⁀‿⁀......... –
我也试过这样做,但只能得到: -^_^.. :)需要改进。 –
- 1. jinja2变量命名 - 变量命名限制与Python变量相同吗?
- 2. CMD变量名称限制?
- 3. Java ASM GeneratorAdapter变量命名
- 4. 如何命名代表阈值或限制的变量?
- 5. Java常量变量,命名约定
- 6. java静态变量的命名约定
- 7. 在java中命名变量的做法。为什么类变量不包变量
- 8. 用变量命名变量
- 9. HTTPSession变量限制
- 10. MySQL限制变量
- 11. C#变量命名
- 12. C++命名变量
- 13. C++变量命名
- 14. 命名C++变量
- 15. 变量数量限制
- 16. 在java中的匿名类的限制?
- 17. PowerShell的:限制变量值
- 18. 命名变量的长度
- 19. 命名的变量在C
- 20. “var”变量的命名
- 21. 命名的数组在Java中的变量
- 22. 如何将变量命名为java中另一个变量的值?
- 23. 布尔变量名称的Java命名约定:writerEnabled vs writerIsEnabled
- 24. GHC中的变量名称是否有长度限制?
- 25. 无限制变量名称在水星中的声明
- 26. Amazon Elastic Beanstalk中的自定义环境变量名称限制
- 27. 如何在Netbeans中限制范围内的变量名称?
- 28. OWL中是否存在命名限制?
- 29. 二进制搜索变量(Java)中的无限循环
- 30. 我可以用java中的变量命名数组吗?
这不是*公约*。 – 2012-10-12 10:47:13
@pap谢谢,这个标题* *更好。 – 2012-10-12 10:49:29
@pap谢谢,编辑 – NPKR