¿Qué caracteres son válidos en un nombre de clase de Java? ¿Qué otras reglas rigen los nombres de clase de Java (por ejemplo, los nombres de clase de Java no pueden comenzar con un número)?
Puedes tener casi cualquier personaje, ¡incluyendo la mayoría de los personajes de Unicode! La definición exacta se encuentra en la Especificación del lenguaje Java en la sección 3.8: Identificadores .
Un identificador es una secuencia de longitud ilimitada de letras de Java y dígitos de Java, el primero de los cuales debe ser un letra de Java. ...
Se pueden extraer letras y dígitos de todo el conjunto de caracteres de Unicode, ... Esto permite a los programadores usar identificadores en sus programas que están escritos en sus idiomas nativos.
Un identificador no puede tener la misma ortografía (secuencia de caracteres Unicode) que una palabra clave (§3.9), literal booleano (§3.10.3) o el literal nulo (§3.10.7), o se produce un error de compilación.
Sin embargo, vea esta pregunta para saber si debe o no hacer eso.
Cada lenguaje de programación tiene su propio conjunto de reglas y convenciones para los tipos de nombres que puede usar, y el lenguaje de programación Java no es diferente. Las reglas y convenciones para nombrar sus variables se pueden resumir de la siguiente manera:
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 de Unicode, que comienza con una letra, el signo de dólar "$" o el carácter de subrayado "_". La convención, sin embargo, es comenzar siempre los nombres de sus variables con una letra, no "$" 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 contengan el signo de dólar, pero los nombres de sus variables siempre deben evitar su uso. Existe una convención similar para el carácter de subrayado; Si bien es técnicamente legal comenzar el nombre de su variable con "_", se desaconseja esta práctica. No se permite el espacio en blanco.
Los caracteres subsiguientes pueden ser letras, dígitos, signos de dólar o caracteres de subrayado. Las convenciones (y el sentido común) también se aplican a esta regla. Al elegir un nombre para sus variables, use palabras completas en lugar de abreviaturas crípticas. Hacerlo hará que su código sea más fácil de leer y entender. En muchos casos también hará que su código se autodocumente; los campos denominados cadencia, velocidad y engranaje, por ejemplo, son mucho más intuitivos que las versiones abreviadas, como s, c y g. También tenga en cuenta que el nombre que elija no debe ser una palabra clave o una palabra reservada.
Si el nombre que elige consta de una sola palabra, deletree esa palabra en letras minúsculas. Si consta de más de una palabra, escribe con mayúscula la primera letra de cada palabra subsiguiente. Los nombres gearRatio y currentGear son ejemplos principales de esta convención. Si su variable almacena un valor constante, como
static final int NUM_GEARS = 6
, la convención cambia ligeramente, mayúscula cada letra y separa las palabras subsiguientes con el carácter de subrayado. Por convención, el carácter de subrayado nunca se utiliza en otros lugares.
Desde el tutorial oficial de Java .
Además de las respuestas anteriores, vale la pena señalar que:
$ var1 £ var2 € var3
Creo que el uso de símbolos de moneda se origina en C/C++, donde las variables agregadas a su código por el compilador empezaron convencionalmente con '$'. Un ejemplo obvio en Java son los nombres de los archivos '.class' para las clases internas, que por convención tienen el formato 'Outer $ Inner.class'
Comparar:
clase Empleado: public IPayable // C++
con
empleado de clase: IPayable // C #
y
clase Employee implementa Payable // Java
salario doble privado;
Una pequeña minoría coloca el guión bajo después del nombre del campo, p. Ej.
doble salario privado_;
Como ya lo dijo Jason Cohen, la Especificación del lenguaje Java define qué es un identificador legal en la sección 3.8:
"Un identificador es una secuencia de longitud ilimitada de letras Java y dígitos Java, el primero de los cuales debe ser una letra Java. Una [...]" letra Java "es un carácter para el cual el método Character.isJavaIdentifierStart (int) devuelve Un 'letra o dígito de Java' es un carácter para el cual el método Character.isJavaIdentifierPart (int) devuelve true ".
Esperemos que esto responda a su segunda pregunta. Respecto a tu primera pregunta; Tanto los maestros como (hasta donde puedo recordar) me enseñaron a los compiladores de Java que un nombre de clase de Java debería ser un identificador que comience con una letra mayúscula A-Z, pero no puedo encontrar ninguna fuente confiable sobre esto. Al intentarlo con OpenJDK, no hay advertencias al comenzar nombres de clase con letras minúsculas o incluso con un signo $. Sin embargo, cuando usa un signo $, tiene que escapar de él si compila desde un shell bash.
Me gustaría agregar a la respuesta de bosnic que cualquier carácter de moneda válido es legal para un identificador en Java. th € is es un identificador legal, al igual que € this, y € también. Sin embargo, no puedo averiguar cómo editar su respuesta, por lo que me veo obligado a publicar esta adición trivial.
¿Qué otras reglas rigen los nombres de clase de Java (por ejemplo, los nombres de clase de Java no pueden comenzar con un número)?
Los nombres de las clases deben ser nombres en UpperCamelCase, con la primera letra de cada palabra en mayúscula. Use palabras completas: evite los acrónimos y las abreviaturas (a menos que la abreviatura sea mucho más utilizada que la forma larga, como URL o HTML). Las convenciones de nomenclatura se pueden leer aquí:
http://www.Oracle.com/technetwork/Java/codeconventions-135099.html
Los identificadores se utilizan para nombres de clase, nombres de métodos y nombres de variables. Un identificador puede ser cualquier secuencia descriptiva de letras mayúsculas y minúsculas, números o caracteres de signos de dólar y de puntuación baja. No deben comenzar con un número, para que no se confundan con un literal numérico. Una vez más, Java distingue entre mayúsculas y minúsculas, por lo que VALUE es un identificador diferente al valor. Algunos ejemplos de identificadores válidos son:
AvgTemp, cuenta a4, $ test, this_is_ok
Los nombres de variables no válidos incluyen:
2 cuentas, alta temperatura, No/ok