250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- 싱글톤
- 의존관계
- 다형성
- 참조변수
- 코드트리조별과제
- 서블릿
- 추상클래스
- 스프링컨테이너
- HttpServletResponse
- ocp
- 오버라이딩
- equals()
- 코딩테스트
- http 메시지 컨버터
- 코드트리
- fielderror
- 백준
- 김영한
- html form
- 티스토리챌린지
- 프록시
- objecterror
- 테스트코드
- JSON
- DI
- 스프링
- java
- 인터페이스
- @configuration
Archives
- Today
- Total
minOS
자바의 정석 ch9-4~6 hashCode(), toString() 본문
728x90
ch9-4 hashCode()
- 객체의 해시코드(hash code)를 반환하는 메서드
- Object클래스의 hash code()는 객체의 주소를 int 로 변환해서 반환
public native int hashCode();
- equals()를 오버라이딩하면,hasCode()도 오버라이딩해야 한다. 왜냐면 equals()의 결과가 true인 두 객체의 해시코드는 같아 야 하기 때문이다.
ch9-5~6 toString(), toString()의 오버라이딩
- toString(): 객체를 문자열(String)으로 변환하기 위한 메서드
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
참고)
getClass -> 설계도 객체
예제class Card { String kind; int number; Card(String kind, int number) { this.kind = kind; this.number = number; } Card() { this("SPACE", 1); } } public class Ex9_4 { public static void main(String[] args) { Card c1 = new Card(); Card c2 = new Card(); System.out.println(c1.toString()); System.out.println(c2.toString()); } }
출력 결과클래스이름과@주소값변환한값
toString() 오버라이딩class Card { String kind; int number; Card(String kind, int number) { this.kind = kind; this.number = number; } Card() { this("SPACE", 1); } // Object클래스의 toString()을 오버라이딩 public String toString() { return "kind : " + kind + ", number:" + number; } } public class Ex9_4 { public static void main(String[] args) { Card c1 = new Card(); Card c2 = new Card(); System.out.println(c1.toString()); System.out.println(c2.toString());
출력결과
객체 == iv 집합 !
객체를 문자열로 변환한다는 것은 iv값을 문자열로 변환한다는 것과 같다.예제예제예제예제
예제
import java.util.Objects; class Card { String kind; int number; Card(String kind, int number) { this.kind = kind; this.number = number; } Card() { this("SPACE", 1); } // Object클래스의 toString()을 오버라이딩 public String toString() { return "kind : " + kind + ", number:" + number; } //equals()를 오버라이딩하면 hashCode()도 오버라이딩 해야한다. public int hashCode() { return Objects.hash(kind, number); // 가변인자라서 호출시 지정하는 값의 개수가 정해져있지 않다 } public boolean equals(Object obj) { if (!(obj instanceof Card)) return false; Card c = (Card) obj; return this.kind.equals(c.kind) && this.number == c.number; } } public class Ex9_4 { public static void main(String[] args) { Card c1 = new Card(); Card c2 = new Card(); System.out.println(c1.toString()); System.out.println(c2.toString()); System.out.println(c1.equals(c2)); System.out.println(c1.hashCode()); System.out.println(c2.hashCode()); //hashCode() 주석처리하면 다른 값나옴 } }
출력결과
728x90
'TIL > 남궁성의 자바의 정석' 카테고리의 다른 글
자바의 정석 ch9-7~10 String클래스, 문자열 비교, 빈 문자열 (1) | 2024.10.10 |
---|---|
자바의 정석 ch9-1~3 Object 클래스와 equals() (0) | 2024.09.25 |
자바의 정석 ch8-18 연결된 예외(chained exception) (0) | 2024.09.23 |
자바의 정석 ch8-15~17 사용자 정의 예외 만들기, 예외 되던지기 (1) | 2024.09.14 |
자바의 정석 ch8-11~14 예외선언하기 ,finally블럭 (1) | 2024.09.12 |