수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

immutable 클래스의 인스턴스를 비교할때, ==? .equals()?

다옴

2023.04.01

대표적인 immutable Class 인 String 을 예로 들어서..
같은 charSequence 를 가지고 있는 여러개의 String 들은 immutable 하기 때문에, == 로 비교해도 상관 없으며, 이것이 성능상 훨씬 좋을 수 있을것 같은데요..
굳이 왜 String 에서는 equals() 를 override 했을까요?
그리고, immutable Class 의 instance 들을 비교할 때는 ==이나, equals()둘중에 무엇을 호출해야 한다 라는 코드 가이드가 있는지도 궁금합니다..(또 그러한 이유도)

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 보슬

    음.. 그렇겠네요. 상세한 답변 감사합니다~

  • 라와

    1.
    하지만 두 객체가 생성될때 immutable이니깐 ==로 비교하게 할 수는 없을까? 라고 해 보면,
    첫번째 new String(\A\) 과, 두번째 new String(\A\)이 모두 같은 객체를 가리켜야 할것이고,
    그렇게 되는 방법은 \상수풀\에 있는 놈을 가져다 쓰는것일겁니다.
    \상수풀\에 있는 놈들은, GC의 대상이 될 수 없습니다. ( 메모리 문제 발생 가능 )

    2.
    하지만 그렇지 않다고 해도, new String(\A\)를 여러

  • 이하얀

    만약 직접 무언가를 만드시고, 철저히 관리 한다면, 문제 될 것이 없어 보입니다.


    하지만, == 로 비교하기 위해서는 모두 같은 메모리 주소를 가리키고 있어야 할것입니다.
    void someMethod() {
    if ( new String(\A\) == new String (\A\) ) { ... }
    }
    위의 메소드가 수행 될때에는 두개의 String객체를 만들어 낼것입니다.
    위의 메소드를 벗어 난다면 그 객체 두개는 더 이상 사용되지 않으므로 GC의

  • 유1혹

    찬님 / 맞습니다! 제가 그 부분을 모르겠다는 거에요.. ^^; \aaa\==new String(\aaa\); 인 경우에는 false 가 떨어지겠지만.
    제가 추후에 만들 immutable class 에서 default constructor 을 막아놓은 채 철저한 Constants Pool 을 관리한다면, 어떤 경우에도 equals() 를 오버라이드 할 필요가 없지 않나? 하는 거죠..

  • 김예쁨

    지금 String 클래스가 immutable하니, 걍 == 로 비교해도 되지 않을까? 라고 하셨는데 ^^;;
    그렇다면 String 클래스에서는 왜 equals 메소드를 오버라이딩 해 놓았을까요?

번호 제 목 글쓴이 날짜
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
2699354 영문 웹폰트 관련 질문입니다!!! (1) 치킨마루 2025-06-25
2699329 윈도우 미디어 플레이어 URL 질문!!! (1) 제철 2025-06-25
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
2698796 이 오류를 이해를 못하겠어요 Addicted 2025-06-20
2698712 IF 문 이 계속 오류가 나요 (2) 옆집오빠야 2025-06-19
2698687 이미지를 클릭하면 그 이미지를 다운받게해주는 방법 질문요 ^^ (미해결) (5) 해지개 2025-06-19
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com