2016-01-28 18 views
5

Jakie są reguły dotyczące znaków, które mogą być używane w nazwach zmiennych Java?Dlaczego nie mogę używać znaku w pliku kodu źródłowego Java jako nazwy zmiennej?

mam ten przykładowy kod:

public class Main { 
    public static void main(String[] args) { 
     int k = 4; 
     System.out.println(s); 
    } 
} 

który nie zostanie skompilowany:

javac Main.java 
Main.java:3: error: illegal character: '\udd1e' 
     int k = 4; 
      ^
1 error 

Więc dlaczego kompilator Java rzuca błąd na ''? (\ UD834 \ uDD1E)

samo w ideone.com: http://ideone.com/fnmvpG

+0

Jakie kodowanie zostało ustawione w IDE? – Jens

+0

@Jens Nie używam żadnego IDE. To tylko prosty plik tekstowy, kompiluję z terminala. Sam plik jest kodowany w UTF-8. –

+0

Ustawienia kodowania linii poleceń? – Jens

Odpowiedz

6

Jakie są zasady dotyczące znaków, które mogą być używane w nazwach zmiennych Java?

Reguły znajdują się w JLS dla identyfikatorów, w section 3.8. Jesteś zainteresowany Character.isJavaIdentifierPart:

Postać może być częścią identyfikator Java, jeśli którykolwiek z następujących warunków:

  • jest to list
  • to symbol waluty (takie jak '$')
  • to znak interpunkcyjny łączący (takie jak '_')
  • jest cyfrą
  • to list numeryczny (takie jak rzymski liczebnik znaku)
  • to łącząc znak
  • to jest non-spacing znak
  • isIdentifierIgnorable (punkt kodowy) zwraca true dla charakteru

Oczywiście zakłada to, że kompilujesz swój kod z odpowiednim kodowaniem.

Postać, którą najwyraźniej próbujesz użyć, to U+1D11E, która nie jest żadną z powyższych. To muzyczny klucz wiolinowy, który znajduje się w kategorii "Symbole, inne".