예를 들어 다음과 같은 코드를 작성합니다.
int i; { int j=1; i=j; }
이 코드가 클래스 정의 영역에 존재하는 경우 클래스 속성의 내용을 초기화하는 데 사용되는 일반 명령문 블록임을 알 수 있습니다. . 인스턴스화될 때 호출되는 클래스에 있으며 일부 메소드가 실행될 수 있습니다.
많은 경우 싱글톤 및 기타 모드에서 사용됩니다. 복잡한 클래스의 콘텐츠를 초기화하기 위해 정적을 추가하면 로딩 시퀀스로 인해 발생하는 일부 런타임 예외를 피할 수 있습니다.
그런데 이 코드가 메소드에 나타나면 어떻게 될까요?
기본적으로는 전혀 말이 되지 않습니다. 이전 생각에는 코드를 묶는 형식일 뿐, 다른 것은 아무것도 없었습니다.
오늘은 "문 태그"와 관련된 코드를 작성했습니다:
label17: int i; int j; ThreadGroup[] arrayOfThreadGroup; if (flag) break label17; return 0;
":" 위치에서 "토큰 ":"의 구문 오류, {이 토큰 이후에 예상됨" 예외가 발생했습니다.
즉, 코드가 한 줄에 존재할 수 없는 경우(int i는 메서드 본문 내부에 명확한 인스턴스화 할당 위치가 있어야 함) label17을 명령문 블록으로 표시해야 합니다.
올바른 형식은 다음과 같습니다:
label17: { int i; int j; ThreadGroup[] arrayOfThreadGroup; if (flag) break label17; return 0; } 或者: label17: int i; int j; ThreadGroup[] arrayOfThreadGroup; if (flag){ break label17; return 0;}
잘못된 사용법을 살펴보겠습니다:
label13: int x = 0;
분명히 레이블 뒤에 기본 한 줄 명령문 블록이 있으며 이 x는 어디에나 있을 수 있습니다. 앞으로는 None을 사용할 수 없습니다. 오류입니다. 프롬프트는 다음과 같습니다.
이 줄에 여러 마커가 있습니다.
- x를 변수로 확인할 수 없습니다.
- 토큰 "int"에 구문 오류가 있습니다. 이 토큰을 삭제하세요.
두 가지 올바른 형식이 있습니다.
int x = 0; label13: x = 0; 或者 label13:{ int x = 0;}
그래서 나는 이전의 오해가 for(){} 및 if(){}와 같은 사용법에서 논리적 if() 및 문 블록{}이 두 개의 독립적인 구문이어야 한다는 것이라고 추측했습니다.
JAVA 문 태그의 보다 합법적인 사용과 {} 문 블록의 사용에 대해 알아보려면 PHP 중국어 웹사이트에서 관련 기사를 참고하세요!