According to the Java specification (see http://docs.oracle.com/javase/specs/jls/se5.0/html/lexical.html#3.8 ) $ is a valid value in the identifier. However, note that "The $ character should only be used in mechanically generated source code or, less commonly, to access existing names on legacy systems."
In decompiled code, there are two common reasons for designating dollar signs in a variable name:
1. (, ), outerclass$innerclass. (., , http://docstore.mik.ua/orelly/java/exp/ch05_09.htm , ). , /, โโ outerclass $, $1 ..
2. . " " , ame. RetroGuard, -, $ . , obfuscator $ disambiguator ( , , ), , ..
val $b , , .