2012-09-21 2 views
4

질문 중 하나에 대답하면서, 나는이 흥미로운 상황을 발견했습니다.문자열이 불법 탈출 charcter

다음과 같은 문자열이 있으면 Netbeans은 illegal start of expression이라고 불평하지 않습니다.

String temp="\19825655."; 

'1'을 제거하면 바로 illegal start of expression이라고 불평합니다.

String temp="\9825655."; 

이 동작에 대한 이유를 파악하지 못했습니다. 모든 입력을 부탁드립니다.

관측 :\9\8은 특별한 의미가 있습니다. \9\8에 대해서만 illegal start of expression이 표시됩니다. 다른 모든 조합은 불평하지 않습니다.

+1

다음에 오는 번호에 대해 이스케이프 시퀀스를 사용하고 있습니다. '\ 98'은 유효하지 않습니다. –

답변

13

\1 8 진수 이스케이프 코드입니다. JLS에서 Escape Sequences for Character and String Literals으로 확인하십시오.

+1

나 한테 이길거야. – Brian

+1

@DJ : 좋아! 감사. 이제 알았어. – kosa

+0

+1이므로'\ 1'과'9825655 '로 취급하고'\ 12345'는'\ 123'과'45'로 취급합니다. –

1

오른쪽 의미는 조합 \1이 이스케이프 시퀀스임을 의미합니다. 그러나 제 지식으로는 알려진 에스 케이프 순서가 아닙니다.

편집 : OK 그것이 진수 번호, 흥미로운 - \x Escape in Java?

+0

글쎄, 그 부분을 이해하지만, 왜 \ 8과 \ 9가 아닌지? – kosa

+1

@ Nambari - Java 사양으로 지정하면 안됩니다. 다른 대답의 링크를 참조하십시오. –

+1

이것은 8 진수 이스케이프이며 8 진수는 0-7의 숫자 만 허용하므로 \ 8은 올바른 8 진수 값이 아닙니다. – Brian