textual sintaxis semantico semantica relacion programacion interpretacion fuente entre ejemplos definicion codigo analizador java syntax character literals octal

java - semantico - sintaxis y semantica en programacion



¿Cuál es la semántica de Java de un número escapado en un literal de caracteres, por ejemplo, ''/ 15''? (3)

El hecho de que ponga los dígitos entre comillas me hace sospechar que está interpretando el número como un carácter literal. Los dígitos que siguen deben estar en octal.

Explique qué ocurre exactamente cuando se ejecutan las siguientes secciones de código:

int a=''/15''; System.out.println(a);

esto imprime 13;

int a=''/25''; System.out.println(a);

esto imprime 21;

int a=''/100''; System.out.println(a);

esto imprime 64.


La notación /nnn denota un código de carácter octal en Java. entonces int a = ''/15'' asigna el valor de autocasting del carácter octal 15 a a que es decimal 13.


Usted ha asignado un carácter literal, que está delimitado por comillas simples, por ejemplo, ''a'' (a diferencia de un String literal, que está delimitado por comillas dobles, por ejemplo, "a" ) a una variable int . Java realiza un reparto de ensanchamiento automático desde el char sin signo de 16 bits al int . Firmado de 32 bits.

Sin embargo, cuando un carácter literal es una barra invertida seguida de 1-3 dígitos, es una representación octal ( base/radix 8) del personaje. Así:

  • /15 = 1 × 8 + 5 = 13 (un retorno de carro, igual que ''/r'' )
  • /25 = 2 × 8 + 5 = 21 (un reconocimiento negativo de caracteres NAK)
  • /100 = 1 × 64 + 0 × 8 + 0 = 64 (el símbolo @, igual que ''@'' )

Para obtener más información sobre los literales de caracteres y las secuencias de escape, consulte las secciones de JLS:

Citando el BNF de 3.10.6:

OctalEscape: / OctalDigit / OctalDigit OctalDigit / ZeroToThree OctalDigit OctalDigit OctalDigit: one of 0 1 2 3 4 5 6 7 ZeroToThree: one of 0 1 2 3