2012-10-12 116 views

Respuesta

16

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étodo Character.isJavaIdentifierStart(int) devuelve verdadero.
Una "letra o dígito de Java" es un carácter para el que el método Character.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

+1 para el enlace;) –

+1

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

12

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 c‮h = 0; c‮h < Character.MAX_VALUE; c‮h++) 
    if (Character.isJavaIdentifierPart(c‮h) && !Character.isJavaIdentifierStart(c‮h)) 
     System.out.printf("%04x <%s>%n", (int) c‮h, "" + c‮h); 

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

+5

+1 Me encanta el primer nombre de variable :) –

+1

⁀ ‿ .... ......... –

+0

También intenté hacer eso, pero solo pude obtener hasta: -^_^.. :) Necesito mejorar. –

Cuestiones relacionadas