significa - tipos de variables en java netbeans
¿Cuál es el significado de $ en un nombre de variable? (2)
Recientemente leí que el signo $ está permitido en los nombres de las variables de Java, pero tiene un significado especial. Desafortunadamente no se menciona cuál es este significado especial.
Por lo tanto, pregunto aquí: ¿Cuál es el significado especial de $ en nombres de variables en Java?
Aquí está la cita exacta de
Java: una introducción a la resolución de problemas y la programación
de Walter Savitch:
Java permite que el símbolo $ del signo de dólar aparezca en un identificador, pero estos identificadores tienen un significado especial, por lo que no debe usar el símbolo $ en sus identificadores.
No tiene un significado especial para esto :
"Los nombres de las variables distinguen entre mayúsculas y minúsculas. El nombre de una variable puede ser cualquier identificador legal: una secuencia de longitud ilimitada de letras y dígitos Unicode, comenzando con una letra, el signo de dólar" $ "o el carácter de subrayado" _ ". , sin embargo, siempre debe comenzar sus nombres de variable con una letra, no con "$" o "_". Además, el carácter de signo de dólar, por convención, nunca se usa en absoluto. Puede encontrar algunas situaciones en las que los nombres generados automáticamente contienen el signo de dólar, pero los nombres de las variables siempre deben evitar su uso. Existe una convención similar para el carácter de subrayado, aunque es técnicamente legal comenzar el nombre de su variable con "_", se desaconseja esta práctica. El espacio en blanco no está permitido.
$
es utilizado internamente por el compilador para decorar ciertos nombres. Wikipedia da el siguiente ejemplo :
public class foo {
class bar {
public int x;
}
public void zark () {
Object f = new Object () {
public String toString() {
return "hello";
}
};
}
}
Compilar este programa producirá tres archivos .class:
-
foo.class
, que contiene la clase principal (externa)foo
-
foo$bar.class
, que contiene la clase interna nombradafoo.bar
-
foo$1.class
, que contiene la clase interna anónima (local para el métodofoo.zark
)
Todos estos nombres de clase son válidos (ya que $
símbolos están permitidos en la especificación JVM).
En una línea similar, javac
usa $
en algunos nombres de variables generados automáticamente: por ejemplo, this$0
y otros se usan para las referencias implícitas de las clases internas a sus clases externas.
Finalmente, el JLS recomienda lo siguiente :
El carácter
$
debe usarse solo en código fuente generado mecánicamente o, raramente, para acceder a nombres preexistentes en sistemas heredados.