문자열을 사용하여 스위치 케이스에 관련된 하나의 쿼리가 있습니다. 스위치 케이스의 경우 문자열 내부에서 jvm이 어떻게 작동합니까 (기능은 Java 1.7에 포함)?문자열이있는 스위치 케이스 (내부 Java 1.7)는 내부적으로 어떻게 작동합니까?
답변
switch 문은 해당 식의 String 개체를 String.equals 메서드를 사용하는 것처럼 각 사례 레이블과 연결된 식과 비교합니다. 따라서 switch 문에서 String 객체를 비교할 때는 대/소문자를 구분합니다.
Java Switch Case는 String.equals() 메서드를 사용하여 전달 된 값과 대/소문자 값을 비교합니다.
스위치의 문자열에 대한 Java 7 문서에 따르면 Java 컴파일러는 체인 된 if-then-else 문보다 String 객체를 사용하는 switch 문에서 일반적으로보다 효율적인 바이트 코드를 생성합니다.
String fruit ="Mango";
switch (fruit) {
case "Apple": System.out.println("It's Apple : "+"Apple".hashCode());
break;
case "mango": System.out.println("It's mango : "+"mango".hashCode());
break;
case "Mango": System.out.println("It's Mango : "+"Mango".hashCode());
break;
}
JVM은 다음과 같은이 변환 :
String fruit = "Mango";
String str1;
switch ((str1 = fruit).hashCode()) {
case 63476538:
if (str1.equals("Apple")) {
System.out.println("It's Mango : " + "Mango".hashCode());
}
break;
case 74109858:
if (str1.equals("Mango")) {
System.out.println("It's Mango : " + "Mango".hashCode());
}
break;
case 103662530:
if (!str1.equals("mango")) {
System.out.println("It's mango : " + "mango".hashCode());
return;
}
break;
}
JVM에서 사용되는 해싱 개념이 있습니까? –
@TarunTyagi 네, 해싱을 사용합니다. 편집 된 앤서를 확인하십시오. –
기본 케이스와 함께 예제를 보여 주어야합니다. –
- 1. 루프 내부 스위치 케이스
- 2. 내부적으로 Java ConcurrrentHashMap이 어떻게 작동합니까?
- 3. printf는 내부적으로 어떻게 작동합니까?
- 4. Coffeescript의 스위치 케이스 내부 구문
- 5. 화살표 연산자는 Java 8에서 내부적으로 어떻게 작동합니까?
- 6. JAVA 스캐너 클래스는 어떻게 내부적으로 작동합니까?
- 7. 그루비 클로저가 내부적으로 어떻게 작동합니까?
- 8. stringstream은 어떻게 내부적으로 작동합니까?
- 9. typedef는 내부적으로 어떻게 작동합니까?
- 10. LINQ는 내부적으로 어떻게 작동합니까?
- 11. Calabash는 내부적으로 어떻게 작동합니까?
- 12. 데이터베이스가 내부적으로 어떻게 작동합니까?
- 13. 근검은 어떻게 내부적으로 작동합니까?
- 14. .SD는 내부적으로 어떻게 작동합니까?
- 15. CGContextClipToMask는 내부적으로 어떻게 작동합니까?
- 16. DISTINCT는 어떻게 내부적으로 작동합니까?
- 17. Firebug는 내부적으로 어떻게 작동합니까?
- 18. Viewstate는 내부적으로 어떻게 작동합니까?
- 19. 람다 식은 어떻게 내부적으로 작동합니까?
- 20. Java 문자열을 사용하는 스위치 케이스 - garbagy?
- 21. 스위치 케이스 외부 변수 java
- 22. 자바 직렬화가 내부적으로 어떻게 작동합니까?
- 23. 서비스는 어떻게 안드로이드에서 내부적으로 작동합니까?
- 24. 스위치 케이스
- 25. 스위치 케이스 내부의 루프 내부에있는 스위치 케이스
- 26. 케이스 앞에 숫자가 0 인 경우 스위치 케이스는 어떻게 작동합니까?
- 27. PHP 스위치 케이스 제목
- 28. 스위치 내부 인쇄, C++, 케이스 밖에 있습니까?
- 29. 다른 스위치 케이스 (기능이있는 스위치 케이스)
- 30. 다른 스위치 케이스 내부 스위치 케이스에서 Jquery onchange 기능 중지
을 https://docs.oracle.com/javase/specs/jls/se9/html/jls-14
이 예제를 참조하십시오 .html # jls-14.11 – prsvr
읽어보기 : https://stackoverflow.com/questions/10836055/why-is-the-switch-statement-faster-than-if-else-for-string-in-java-7 – DoesData