이 기능이 나중에 Java 버전에 넣을 것입니까?
누군가가 기술 방법 Java의 switch
명령문에서 기술을 설명 할 수없는 이유를 설명 할 수 있습니까?
해결 방법
string
사례가있는 switch
가 컴파일하는 동안 두 개의 스위치로 변환됩니다.첫 번째는 각 문자열을 고유 한 정수 & mdash로 매핑합니다. 원래 스위치의 위치.이것은 레이블의 해시 코드를 처음 전환하여 수행됩니다.해당 케이스는 문자열 평등을 테스트하는 문을 이라면 입니다.해시에 충돌이있는 경우 테스트는 계단식
if-else-else-else-else-else-else-else-else-else-else-else-else-else입니다.두 번째 스위치는 원래 소스 코드에서 원래 소스 코드에서 미러링되지만 케이스 레이블을 해당 위치로 대체합니다.이 두 단계 프로세스를 사용하면 원래 스위치의 흐름 제어를 쉽게 보존 할 수 있습니다.
상수가 조밀 한 경우 인덱스로 사용됩니다 (가장 낮은 값을 뺀 후) 명령어 포인터 & mdash 테이블로 사용됩니다. tableswitch
명령어.
상수가 스파 스가되면 올바른 케이스에 대한 이진 검색이 수행됩니다. lookupswitch
명령어입니다.
string
객체에서 switch
에서 switch
를 꺼내는 것, 두 명령어가 모두 사용될 것입니다. lookupswitch
는 해시 코드의 첫 번째 스위치에 적합하여 원래 위치를 찾습니다.생성 된 서수는 tableswitch
에 대한 자연스러운 적합입니다.
Pill p = Pill.valueOf(str);
switch(p) {
case RED: pop(); break;
case BLUE: push(); break;
}
참조 페이지 https://stackoverflow.com/questions/338206
'자바' 카테고리의 다른 글
Eclipse에서 항아리를 가져 오는 방법 (0) | 2021.04.14 |
---|---|
thread.sleep (x) 또는 wait ()을 사용할 때 예외를 얻습니다. (0) | 2021.04.14 |
java의 문자열 배열 변환의 문자열 (0) | 2021.04.14 |
일반 유형의 클래스 인스턴스를 어떻게 얻을 수 있습니까? (0) | 2021.04.14 |
Java에서 NoclassDeffoundError를 얻는 이유는 무엇입니까? (0) | 2021.04.14 |
댓글