Cosas muy extrañas con los personajes de Java

El misterio del error de comentario y otras historias ...

Introducción

¿Sabe que la siguiente es una expresión Java válida?





\u0069\u006E\u0074 \u0069 \u003D \u0038\u003B
      
      



Puede intentar copiarlo y pegarlo en el método principal de cualquier clase y compilarlo. Si luego agrega la siguiente declaración





System.out.println(i);
      
      



y después de la compilación, ejecute esta clase, ¡el código imprimirá el número 8!





¿Sabías que este comentario arroja un error de sintaxis en el momento de la compilación?





/*
 * The file will be generated inside the C:\users\claudio folder
 */
      
      



Sin embargo, los comentarios no deben dar lugar a errores de sintaxis. De hecho, los programadores a menudo comentan fragmentos de código para que el compilador los ignore ... entonces, ¿qué está pasando?





, , Java  char



.





char

char



Java.  .  ,  char



:





char aCharacter = 'a';
      
      



, .  , , .  :





String s = "Java melius semper quam latinam linguam est";
      
      



  char



, :





  • '&'



    ).





  • Unicode (, '\u0061'



    ,  97   'a'



    ).





  • escape- (, '\n'



       ).





.





, , char



, ,     (,  «Canc»  «Enter»  ). 





«Esc» — vesper-bot.





,  char



,    .  :





char aUppercase = 'A';
char minus = '-';
char at = '@';
      
      



char



2 (16 ), 0 65 535. , «», .  ( )   Unicode ( ).





Unicode ( )

,   char



16 ​​ 65 536 .  Unicode  ( , , . .), . Unicode - ,  UTF-8, , , 8-   ASCII, , , , ASCII code (  American Standard Code for Information Interchange).





Unicode char



, 4 , ,  \u



( ). :





char phiCharacter = '\u03A6';  // Capital Greek letter Φ
char nonIdentifiedUnicodeCharacter = '\uABC8';
      
      



  Unicode (  ). , 4 65 536 .





Java 15 Unicode 13.0, , 65 536 .  Unicode , 143 859 .     .   , Unicode, 16- char



,   String



   Character



, , .





escape-

 char



  escape-, , :





  • \b



     backspace, (  Delete).





  • \n



      (  Ente).





  • \\



     \ ( , \ escape-).





  • \t



    (  TAB).





  • \'



      ( ).





  • \"



      ( ).





  • \r



       ( , ).





  • \f



       ( , , ).





,  '"'



  , :





System.out.println('"');
      
      



:





char doubleQuotes = '"';
System.out.println(doubleQuotes);
      
      



:





"
      
      



escape- , , :





System.out.println(''');
      
      



, :





error: empty character literal
        System.out.println(''');
                           ^
error: unclosed character literal
        System.out.println(''');
                             ^
2 errors
      
      



, . , :





System.out.println("'IQ'");
      
      



:





'IQ'
      
      



, \"



escape-, . , :





System.out.println(""IQ"");
      
      



:





error: ')' expected
        System.out.println(""IQ"");
                             ^
error: ';' expected
        System.out.println(""IQ"");
                               ^
2 errors
      
      



:





System.out.println("\"IQ\"");
      
      



:





"IQ"
      
      



Java Unicode

Unicode . ,  Unicode , . , :





int i = 8;
      
      



:





\u0069\u006E\u0074 \u0069 \u003D \u0038\u003B
      
      



, :





System.out.println("i = " + i);
      
      



:





i = 8
      
      



, .  , , () .





Unicode escape-

, Unicode , escape-. ,    , escape- \n



.  Unicode  10 (  A). , Unicode:





char lineFeed = '\u000A';
      
      



:





error: illegal line end in character literal
        char lineFeed = '\u000A'; 
                        ^
1 error
      
      



, :





char lineFeed = '
';
      
      



Unicode    , Java.





, '



,   39 (  27) escape- \', Unicode:





char singleQuote = '\u0027';
      
      



:





char singleQuote = ''';
      
      



:





error: empty character literal

        char singleQuote = '\u0027';
                    ^

error: unclosed character literal

        char singleQuote = '\u0027';
                           ^
2 errors
      
      



, , , .





, D ( 13) escape- \r



. , :





char carriageReturn = '\u000d';
      
      



:





error: illegal line end in character literal

char carriageReturn = '\u000d';
                      ^
1 error
      
      



, Unicode   , , , , .





 ,



,  92 (  5C) escape- \



, :





char backSlash = '\u005C';
      
      



:





error: unclosed character literal
        char backSlash = '\u005C'
                         ^  
1 error
      
      



, :





char backSlash = '\';
      
      



  '



escape-, , .





,  "



,  22 (  34) escape- "



, :





char quotationMark = '\u0022';
      
      



.  :





String quotationMarkString = "\u0022";
      
      



:





error: unclosed string literal

   String quotationMarkString = "\u0022";
                                       ^

1 error  
      
      



:





String quotationMarkString = """;
      
      



Unicode,      . , , , !





// char lineFeed = '\u000A';  
// char carriageReturn = '\u000d'; 
      
      



,       , ;  ! 





, , :





/* char lineFeed = '\u000A';  
   char carriageReturn = '\u000d'; */
      
      



, - , -    \u



. , :





/*
 * The file will be generated inside the C:\users\claudio folder
 */
      
      



4  \u



, :





error: illegal unicode escape

* The file will be generated inside the C:\users\claudio folder
                                             ^
1 error
      
      



,   char



Java .  , , Java, Unicode.  , Unicode , .  , , , .





: 3.3.5 « » 1 «Java »  ( 3.3.5 «»).








All Articles