자바 의 "goto" 구현 수정 필요...
본문 은
용암 블 로그
원본 박문 주소:
http://lavasoft.blog.51cto.com/
자바 언어 에서 goto 는 키 워드 를 유지 하고 goto 문 구 를 사용 하지 않 으 며 goto 키 워드 를 사용 하 는 곳 도 없습니다.
자바 에서 도 특정 상황 에서 특정한 수단 을 통 해 goto 의 기능 을 실현 할 수 있다.자바 가 개발 자 들 이 프로그램 을 마음대로 뛰 어 넘 는 것 을 원 하지 않 는 것 은 분명 하 다.다음은 두 가지 특정 을 설명 한다.
특정 상황: for, while 문 (do.. while 문 포함) 과 같은 순환 체 내 에 만 있 습 니 다.
특정 수단: 구문 태그 와 순환 제어 키워드 break, contine, 문법 형식 은 break / continue 구문 태그 입 니 다.
1. break, contine, 구문 태그
1. 구문 태그
구문 태그 의 문법 은: 태그 이름:
문장 라벨 은 방법 체 내의 마지막 문장 전에 정의 할 수 있다.그러나 구문 태그 가 실제 사용 하 는 기 회 는 break 와 contine 을 결합 하여 사용 하 는 것 이 고 break 와 contine 은 순환 문 구 를 결합 하여 사용 하기 때문에 실제 구문 태그 의 사용 도 순환 과 밀접 하 게 결합 된다.
구문 라벨 이 사용 되 는 경우 순환 반복 문 구 를 정의 할 수 있 습 니 다. 그렇지 않 으 면 컴 파일 오류 가 발생 합 니 다!
따라서 의미 가 있 고 사용 할 수 있 는 라벨 의 미 는 순환 문 구 를 지정 하 는 표지 이다!
2. break, contine 문 구 를 단독으로 사용 합 니 다.
단독 사용 상황 에서 break 문 구 는 현재 의 순환 교체 체 를 끝내 고 나머지 문 구 를 집행 하 는 역할 을 한다.
continue 문장의 역할 은 이번 교체 과정 을 끝내 고 다음 교체 과정 을 계속 수행 하 는 것 이다.
3. break, contine 구문 결합 구문 태그 의 사용
왜 문장 라벨 이 필요 합 니까?
이 유 는 프로그램 이 순환 하 는 끼 워 넣 을 수 있 기 때 문 입 니 다. 다 중 순환 끼 워 넣 을 때 한 번 에 다단 계 순환 이 필요 할 때 가 있 습 니 다. 이 경우 구문 라벨 을 결합 해 야 이 기능 을 실현 할 수 있 습 니 다.
탭 을 사용 한 경우: break 는 탭 이 지정 한 순환 을 중단 하고 뛰 어 내 립 니 다. contine 은 탭 이 지정 한 순환 으로 이동 하고 이 탭 이 지정 한 순환 을 계속 수행 합 니 다.
상황 을 설명 하기 위해 아래 의 예 를 보 세 요.
import java.util.Random;
/**
*
*
* @author leizhimin 2009-7-16 11:43:08
*/
public class TestLable {
public static void main(String[] args) {
outer:
for (int i = 0; i < 10; i++) {
System.out.println("
outer_loop:" + i);
inner:
for (int k = 0; i < 10; k++) {
System.out.print(k + " ");
int x = new Random().nextInt(10);
if (x > 7) {
System.out.print(" >>x == " + x + ", inner , outer !");
continue outer;
}
if (x == 1) {
System.out.print(" >>x == 1, outer inner !");
break outer;
}
}
}
System.out.println("------>>> !");
}
}
실행 결과:
outer_loop:0
0 1 2 3 4 5 6 7 8 9 >>x == 8, inner , outer !
outer_loop:1
0 1 2 3 4 5 >>x == 9, inner , outer !
outer_loop:2
0 1 2 3 4 5 6 7 8 9 >>x == 8, inner , outer !
outer_loop:3
0 1 2 3 4 >>x == 9, inner , outer !
outer_loop:4
0 1 2 3 4 5 6 7 8 9 10 >>x == 8, inner , outer !
outer_loop:5
0 >>x == 1, outer inner !------>>> !
이 집행 결 과 는 무 작위 이다.
다음은 그림 을 보 여 드 리 겠 습 니 다.
http://lavasoft.blog.51cto.com/62575/178997/
스위치
switch 문 구 는 조건 선택 문 입 니 다. 이 문 구 는 'goto' 의 맛 이 있 지만 제한 도 많 기 때문에 실제 적 으로 사용 이 적 습 니 다.
switch 문장의 구 조 는 다음 과 같다.
switch(intvar){
case intval: 구문 코드; break;
case intval: 구문 코드; break;
case intval: 구문 코드; break;
case intval: 구문 코드; break;
default:
문장 코드;
}
switch (intval) {...} 구문 에서 작은 괄호 에서 intvar 는 정수 조건 인자 변수 입 니 다. 이 변 수 는 byte, char, short, int 와 enum (매 거 유형) 몇 가지 유형 으로 본질 적 으로 성형 숫자 입 니 다.intval 은 일치 하 는 조건 인자 값 입 니 다. 일치 할 때 다음 문 구 를 실행 합 니 다.그 중의 모든 break 문 구 는 선택 할 수 있다.break 문 구 를 실행 한 후에 전체 switch 문 구 를 뛰 어 내 립 니 다. 그렇지 않 으 면 다른 조건 과 계속 일치 합 니 다.intvar 가 모든 주어진 조건 값 과 일치 하지 않 을 때 default 문 구 를 실행 하고 default 문 구 를 사용 하지 않 으 면 switch 문 구 를 건 너 뜁 니 다.
switch 문장의 조건 인자 변 수 는 전체 숫자 나 문자 형, 매 거 진 유형 으로 만 사용 할 수 있 습 니 다. 이 제한 이 너무 엄격 해서 switch 문장의 실제 용도 가 크 지 않 습 니 다.
다음은 중국어 금액 숫자 변환 프로그램 입 니 다.
/**
*
*
* @author leizhimin 2009-7-16 13:28:05
*/
public class TestSwitch {
/**
*
*
* @param num
* @return
*/
public static String genCnNum(Long num) {
StringBuffer sb = new StringBuffer();
String snum = String.valueOf(num);
for (char c : snum.toCharArray()) {
sb.append(num2Cn(c));
}
return sb.toString();
}
/**
*
*
* @param c
* @return
*/
private static String num2Cn(char c) {
String res = null;
switch (c) {
case '0':
res = " ";
break;
case '1':
res = " ";
break;
case '2':
res = " ";
break;
case '3':
res = " ";
break;
case '4':
res = " ";
break;
case '5':
res = " ";
break;
case '6':
res = " ";
break;
case '7':
res = " ";
break;
case '8':
res = " ";
break;
case '9':
res = " ";
break;
default:
System.out.println(" , !");
}
return res;
}
public static void main(String[] args) {
System.out.println(genCnNum(4523586022L));
}
}
실행 결과:
Process finished with exit code 0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.