Impossível, só vendo pra crer (ou será que só eu não sabia?!)
12 respostas
rodrigo.bossini
Por gentileza analisem friamente o seguinte trecho de código:
classUnicode{publicstaticvoidmain(Stringargs[]){//char c = '\u' ; //System.out.println (a);}}
Alguém pode me explicar porque raio esse treco aí em cima tá dando erro de compilação?
Veja bem, a linha char c = '\u'; está comentada!! Nunca vi isso na minha vida.
Alguém dê uma luz por favor! Tô quase desistindo de tudo e virando hippie!
ajfilho
Aqui não deu erro nenhum!!!
Qual o problema que aparece para você??
Abraços!
–> Editando…
Eu acho que já sei o que tá acontecendo…
Quando se usa \ e algum dígito, o compilador entende como expressão regular, mas especificamente um caracter de escape.
Tente colocar assim
//char c = '\\u';
e veja o que acontece…
Abraços!
furutani
O erro que dá, mesmo estando comentado é Invalid unicode.
LuksS
Interessante … talvez o javac faça o parser do código-fonte antes de eliminar os comentários
furutani
Não sei se isso resolve seu problema
charc='\\u'
rodrigo.bossini
Na verdade era mais uma curiosidade mesmo, descobri isso por acaso.
char c = ‘\u’ Isso aí resolve sim o erro de compilação, que por sinal, aqui na minha jvm (6_11) é : illegal unicode scape.
Achei estranho pq pensei que o compilador simplesmente ignorasse TUDO que está comentado, o que esse exemplo claramente mostra que não é verdade.
Abraços.
T
thingol
classUnicode{publicstaticvoidmain(Stringargs[]){//char c = '\u' ; //System.out.println (a); }}
O código acima vai dar problemas porque o compilador, na seguinte ordem:
Interpreta os escapes Unicode, que são sequências que começam por “\u” e contém exatamente 4 dígitos hexadecimais (antes de tudo, até antes de interpretar os comentários!)
Separa os tokens , constantes string etc.
Isso é uma característica do Java; acho que o C# não faz isso, embora tenha sido inspirado no Java.
Como há um escape Unicode inválido acima, então o programa tem um erro. É que nossos músculos estão treinados para achar que nada dentro de um comentário vai dar problemas.
O seguinte escape Unicode normalmente dá problema em programas: “\u000A”