인프런 커뮤니티 질문&답변

지수님의 프로필 이미지
지수

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

switch문

Switch문에서 비교하는 값이 String이어도 되나요?

작성

·

425

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? -> 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? -> 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? -> 예

[질문 내용]
Switch 문에서 비교하는 값이 String이어도 되나요?

앞선 강의에서 String 외 다른 타입들은 == 을 통해서 두 값이 같은지 비교하지만,

String은 .equals 를 통해 값을 비교해주신다고 하셨는데

switch문에서 case 별로 분기할 때, String 값이 들어가면 비교를 .equals 로 하도록 되는지가 궁금합니다.

 

수업을 듣다가 궁금해져서 아래와 같이 실습해보았는데

결과는 제대로 나왔습니다.

그런데.. String 비교는 ==로 했을 때 제대로 나올 수도, 아닐 수도 있다고 하셨던 것 같아서 질문 남깁니다.

package condition;


public class Switch4 {


   public static void main(String[] args) {
       String subject = "math";


       int class_number = switch (subject) {
           case "art" -> 1;
           case "math" -> 2;
           case "science" -> 3;
           default -> 0;
       };


       System.out.println("class_number = " + class_number); // 결과는 2로 출력
   }
}


답변 1

1

안녕하세요. 지수님, 공식 서포터즈 y2gcoder입니다.

말씀하신 부분 때문인지는 몰라도 Switch 문에서 String을 사용할 수 있었던 것은 JDK 1.7 이후 부터입니다!

결론적으로는 내부적으로 equals 를 사용한다고 합니다 :)

다음 링크(클릭)을 참고해보시겠습니까?

감사합니다.

지수님의 프로필 이미지
지수
질문자

내부적으로 equals 를 사용하는군요! 감사합니다! 🙏🙏

지수님의 프로필 이미지
지수

작성한 질문수

질문하기