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