Caracteres válidos en un nombre de clase Java

¿Qué caracteres son válidos en un nombre de clase Java? ¿Qué otras reglas rigen los nombres de las clases de Java (por ejemplo, los nombres de las clases de Java no pueden comenzar con un número)?

¡Puedes tener casi cualquier personaje, incluida la mayoría de los caracteres 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 Java y dígitos de Java , la primera de las cuales debe ser una letra de Java . …

Las letras y los dígitos se pueden extraer de todo el juego de caracteres Unicode, … Esto permite a los progtwigdores usar identificadores en sus progtwigs escritos en sus idiomas nativos.

Un identificador no puede tener la misma ortografía (secuencia de caracteres Unicode) como palabra clave (§3.9), booleano literal (§3.10.3), o literal nulo (§3.10.7), o se produce un error en tiempo de comstackción.

Sin embargo, vea esta pregunta sobre si debe hacer eso o no.

Cada lenguaje de progtwigción tiene su propio conjunto de reglas y convenciones para los tipos de nombres que puede usar, y el lenguaje de progtwigció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 mayúsculas de minúsculas. El nombre de una variable puede ser cualquier identificador legal: una secuencia de longitud ilimitada de letras y dígitos 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 sus nombres de 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 contendrán 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 guión bajo; si bien es técnicamente legal comenzar el nombre de su variable con “_”, se desaconseja esta práctica. El espacio en blanco no está permitido.

  • Los caracteres subsiguientes pueden ser letras, dígitos, signos de dólar o caracteres de subrayado. Las convenciones (y el sentido común) se aplican a esta regla también. 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 comprender. En muchos casos, también hará que su código se auto-documente; 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 eliges consiste en una sola palabra, deletrea esa palabra en letras minúsculas. Si consta de más de una palabra, escribe en mayúscula la primera letra de cada palabra siguiente. 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, capitalizando cada letra y separando palabras subsecuentes con el carácter de subrayado. Por convención, el carácter de subrayado nunca se usa en ningún otro lado.

Del tutorial oficial de Java .

Además de las respuestas anteriores, vale la pena señalar que:

  1. Java permite cualquier símbolo de moneda Unicode en nombres de símbolos, por lo que todo lo siguiente funcionará:

$ 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 comstackdor comenzaban de manera convencional 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’

  1. Muchos progtwigdores C # y C ++ adoptan la convención de colocar ‘I’ delante de las interfaces (también conocidas como clases virtuales puras en C ++). Esto no se requiere, y por lo tanto no se hace, en Java porque la palabra clave implementas deja en claro cuando algo es una interfaz.

Comparar:

Empleado de clase: público IPaible // C ++

con

Empleado de clase: IPayable // C #

y

clase Empleado implementa Payable // Java

  1. Muchos proyectos utilizan la convención de colocar un carácter de subrayado delante de los nombres de los campos, de modo que puedan distinguirse fácilmente de las variables y parámetros locales, por ejemplo,

privado doble _salary;

Una pequeña minoría coloca el guión bajo después del nombre del campo, por ejemplo

doble salario privado_;

Como ya ha declarado Jason Cohen, la especificación del lenguaje Java define lo que es un identificador legal en la sección 3.8:

“Un identificador es una secuencia de longitud ilimitada de letras Java y dígitos de Java, la primera de las cuales debe ser una letra de Java. […] Una ‘letra de Java’ es un carácter para el cual regresa el método Character.isJavaIdentifierStart (int) verdadero. Una ‘letra o dígito de Java’ es un carácter para el cual el método Character.isJavaIdentifierPart (int) devuelve verdadero. ”

Es de esperar que responda tu segunda pregunta. En cuanto a tu primera pregunta; Los maestros me han enseñado tanto (y hasta donde puedo recordar) que los comstackdores de Java que un nombre de clase Java debe ser un identificador que comienza con una letra mayúscula AZ, pero no puedo encontrar ninguna fuente confiable sobre esto. Al probarlo con OpenJDK no hay advertencias cuando se comienzan nombres de clases con letras minúsculas o incluso un $ -sign. Sin embargo, al usar un $ -sign, tienes que escapar si comstacks desde un shell bash.

Me gustaría agregar a la respuesta de bosnic que cualquier carácter monetario válido es legal para un identificador en Java. th € is es un identificador legal, como es € this, y € también. Sin embargo, no puedo entender cómo editar su respuesta, por lo que me veo obligado a publicar esta adición trivial.

¿Qué otras reglas rigen los nombres de las clases de Java (por ejemplo, los nombres de las clases de Java no pueden comenzar con un número)?

  • Los nombres de las clases de Java generalmente comienzan con una letra mayúscula.
  • Los nombres de clase de Java no pueden comenzar con un número.
  • si hay varias palabras en el nombre de la clase como “MyClassName”, cada palabra debe comenzar con una letra mayúscula. por ejemplo, “MyClassName”. Esta convención de nomenclatura se basa en CamelCase Type.

Los nombres de clase deben ser sustantivos en UpperCamelCase, con la primera letra de cada palabra en mayúscula. Use palabras completas: evite los acrónimos y abreviaturas (a menos que la abreviatura se use mucho más 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 usan para nombres de clases, 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 del guión bajo y signos de dólar. No deben comenzar con un número, para que no se confundan con un literal numérico. De nuevo, Java distingue entre mayúsculas y minúsculas, por lo que VALUE es un identificador diferente de Value. Algunos ejemplos de identificadores válidos son:

AvgTemp, contar a4, $ test, this_is_ok

Los nombres de variable inválidos incluyen:

2count, alta temperatura, no / ok