olivvve
188
2019-05-16 10:36:03
3
521

"".equals(long); 결과값은? JAVA입니다.


long aa=1234;

System.out.println(("1234".equals(aa)));


하면 어떻게될까요??


1. 컴파일에러

2. 런타임에러

3. true

4. false

5. 기타의견


질문글 아닙니다ㅎㅎ

0
0
  • 댓글 3

  • Frudy
    1k
    2019-05-16 10:43:51 작성 2019-05-16 11:22:41 수정됨

    이 글의 의도가 뭔지 전혀 모르지만...

    일단 사실만 말씀드린다면..


    String클래스는 equals를 오버라이딩했기 때문에...

    equals()매개변수의 타입이 Object라고 하더라도 

    내부적으로 String클래스의 인스턴스인지를 체크합니다.


    그래서 long타입의 변수안에 저장된 값에 상관없이

    무조건 false를 반환합니다.



    실제 코드가 이렇게 되어있습니다.

    실제 테스트해본결과도 false입니다.


    이 글을 작성하신 의도를 잘 모르겠습니다.

    0
  • 뫼비우스의 띠
    274
    2019-05-16 11:12:17 작성 2019-05-16 11:12:50 수정됨

    1234가 내부적으로 스트링으로 변환되서 false가 나오는거 같은데.. 아닌가요?

    0
  • pana
    477
    2019-05-16 12:37:30

    변환되고 하는게 아니라

    anObject이 long이라 if (anObject instanceof String) { 이 false니 건너뛰고

    마지막 return false;를 탑니다

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.