web-dev-qa-db-fra.com

Un caractère de nouvelle ligne unicode (\ u000d) dans Java

Voyons l'extrait de code suivant en Java.

public class Main {
    public static void main(String[] args) {
        // new Character(' \u000d System.out.println("Hello");
    }
}

Dans le code ci-dessus, bien que la seule ligne de la méthode main() soit mise en commentaire, elle affiche la sortie Hello sur la console, même s'il semble que cette ligne commentée contient des erreurs de syntaxe . Si cette ligne n'est pas commentée, elle ne fonctionnera pas du tout, provoquant une erreur de compilation.

Pourquoi affiche-t-il "Bonjour" ici?

43
Lion

Java analyse les codes d'échappement de caractères dans le code source, pas seulement les chaînes.
Cela vous permet d'utiliser des identifiants Unicode sans encodage Unicode.

Par conséquent, la \u000d dans le commentaire est analysé comme une nouvelle ligne, mettant fin au commentaire et commençant un initialiseur d'instance.

46
SLaks