¿Por qué los caracteres especiales (excepto $
, _
) no están permitidos en los nombres de las variables Java?Restricciones de nomenclatura de las variables en java
Respuesta
Este no es el caso, muchos caracteres especiales son realmente válidos para los identificadores. Se define in the JLS #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 de Java" es un carácter para el que el métodoCharacter.isJavaIdentifierStart(int)
devuelve verdadero.
Una "letra o dígito de Java" es un carácter para el que el métodoCharacter.isJavaIdentifierPart(int)
devuelve verdadero.
Por ejemplo, este es un nombre de variable válido:
String sçèêûá¢é£¥ = "bc";
se puede ver todos los caracteres válidos con este simple código:
public static void main(String args[]) {
for (int i = 0; i < Character.MAX_VALUE; i++) {
if (Character.isJavaIdentifierPart(i)) {
System.out.println("i = " + i + ": " + (char) i);
}
}
}
ps: agradable ejemplos on @PeterLawrey's blog
+1 para el enlace;) –
Creo que su ejemplo sería más claro si el nombre de la variable comenzara con un carácter "especial" como: String çèêûá ¢ é £ ¥ = "bc "; – cquezel
El siguiente código es válido en Java ...
int Δ = 1;
double π = 3.141592;
String 你好 = "hello";
Δ++;
System.out.println(Δ);
Yo diría que esos son caracteres bastante especiales para nombres de variables.
Fuente: http://rosettacode.org/wiki/Unicode_variable_names#Java
En realidad, hay un enorme número de caracteres especiales que se permiten en los identificadores de Java tal como es. Por ejemplo, puede hacer que cada símbolo de moneda, y los 10 caracteres de continuación (no sólo _)
if(⁀ ‿ ⁀ == ⁀ ⁔ ⁀ || ¢ + ¢== ₡)
Aún más extraño que puede tener caracteres que son invisibles o hacer que el texto que se imprimirá al revés.
El siguiente programa tiene \u202e
en sus identificadores, lo que da como resultado una apariencia "especial".
for (char ch = 0; ch < Character.MAX_VALUE; ch++)
if (Character.isJavaIdentifierPart(ch) && !Character.isJavaIdentifierStart(ch))
System.out.printf("%04x <%s>%n", (int) ch, "" + ch);
Imprime todos los caracteres especiales permitidos en un identificador que compila y ejecuta.
http://vanillajava.blogspot.co.uk/2012/09/hidden-code.html
http://vanillajava.blogspot.co.uk/2012/08/uses-for-special-characters-in-java-code.html
+1 Me encanta el primer nombre de variable :) –
⁀ ‿ .... ......... –
También intenté hacer eso, pero solo pude obtener hasta: -^_^.. :) Necesito mejorar. –
- 1. Convención de nomenclatura de las variables de Python
- 2. Convenciones de nomenclatura para las variables "número de foos"
- 3. Norma de nomenclatura/formato para las variables globales
- 4. Java: declarando variables con múltiples "restricciones" genéricas en ellos
- 5. restricciones variables de tipo genérico e interfaces
- 6. La implementación de un estándar de nomenclatura para las llaves, índices, restricciones
- 7. Anulando las variables de miembro en Java
- 8. variable constante de Java, convención de nomenclatura
- 9. Igualdad en las restricciones
- 10. Convención de nomenclatura para objetos en java
- 11. Restricciones en el uso de variables locales en C++?
- 12. Convención de nomenclatura Java para nombres de variables booleanas: writerEnabled vs writerIsEnabled
- 13. ¿Es posible colocar restricciones de desigualdad en las variables de tipo haskell?
- 14. dificultad en las funciones de nomenclatura
- 15. Convenciones de nomenclatura de PostgreSQL
- 16. las variables Pass a ActionListener en Java
- 17. Java: variables finales en las clases abstractas
- 18. Convención de nomenclatura: guión bajo en las variables C++ y C#
- 19. Java convenciones de nomenclatura de paquete
- 20. Java convenciones de nomenclatura de Excepción
- 21. PostgreSQL - deshabilitar las restricciones
- 22. ¿Es más rápido acceder a las variables locales finales que las variables de clase en Java?
- 23. Las variables locales en el código de bytes de Java
- 24. Dirección de memoria de las variables en Java
- 25. Servidor SQL: eliminación de filas con restricciones de clave externa: ¿Pueden las transacciones anular las restricciones?
- 26. Java: convención de nomenclatura para accesors
- 27. Cómo enumerar todas las variables de entorno en Java
- 28. Cambiando los valores de las variables en los métodos, Java
- 29. ¿Debo mantener las convenciones de nomenclatura incorrectas?
- 30. ¿Cómo configuro las restricciones de algoritmos genéticos de Matlab?
No se trata de convenciones * *. –
@pap Gracias, este título es * mucho * mejor. –
@pap gracias, para editar – NPKR