爲什麼在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