美元在variables名称中的含义是什么?
最近我读了Javavariables名称中允许的符号$,但有一个特殊的含义。 不幸的是没有提到这个特殊的含义。
所以我在这里问:Java中variables名称的特殊含义是什么?
这里是从确切的报价
Java:解决问题和编程的简介
来自Walter Savitch:
Java确实允许美元符号$出现在标识符中,但是这些标识符有特殊的含义,所以你不应该在标识符中使用$符号。
编译器内部使用$来装饰某些名称。 维基百科给出了下面的例子 : 
 public class foo { class bar { public int x; } public void zark () { Object f = new Object () { public String toString() { return "hello"; } }; } } 
编译这个程序会产生三个.class文件:
-  包含主(外部)类foofoo.class
-   foo$bar.class,包含指定的内部类foo.bar
-   foo$1.class,包含匿名内部类(局部于方法foo.zark)
 所有这些类名都是有效的(因为在JVM规范中允许使用$符号)。 
[报价结束]
 类似地, javac在一些自动生成的variables名中使用$ :例如, this$0等被用于从内部类到它们外部类的隐式引用。 
最后, JLSbuild议如下 :
$字符只能用于机械生成的源代码,或者很less用于访问遗留系统中的预先存在的名称。
它没有特别的意义 :
“variables名称区分大小写,variables名称可以是任何合法的标识符 – 一个以字母,美元符号”$“或下划线字符”_“开头的无限长的Unicode字母和数字序列。 ,但是,总是用一个字母开始variables名称,而不是“$”或“_”。另外,美元符号字符根本不会被使用,您可能会发现某些情况下自动生成的名字会包含美元符号,但是你的variables名应该总是避免使用它,对于下划线字符也存在类似的约定;从技术angular度来说,用“_”开始variables名是合法的,这种做法是不鼓励的,不允许有空格。