본문 바로가기

패스트캠퍼스 환급 챌린지

[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {18} 회차 미션

1. toString() 매서드

 

[ toString 메소드 ]

  • 기본 상속된 Object 클래스의 메소드
  • 객체가 가진 정보를 문자열로 만들어 출력
  • 인스턴스 출력 시 Object.hashCode()로 생성된 해시값을 문자열로 반환시켜줌

인스턴스의 값을 출력할 때 그냥 인스턴스를 넣거나 기본 toString()메소드를 사용하면 해시값을 포함한 이상한 값이 출력됩니다. 만들어 둔 인스턴스의 정보를 편하게 출력하기 위해 toString()메소드를 오버라이딩 해두면 편리합니다.

 


 

먼저 기본 Object.toString()를 사용해서 인스턴스 하나를 출력해본 결과입니다. 그냥 인스턴스만 넣어도 동일하게 작동합니다.

 

package study.first;

public class Main {

	public static void main(String[] args) {

		Sub s1 = new Sub();
		s1.a = "abc";
				
		System.out.println(s1);
		System.out.println(s1.toString());	
	}
}


/* Sub 클래스 */
class Sub {

	int x;
	int y;
	String a;	

이클립스에서 만들어주는 toString() 오버라이딩 메소드입니다. 보기 편한대로 바꿔서 써도 됩니다. 디버깅할때나 값을 출력해서 보고 싶을 때 매우 편하게 사용할 수 있습니다.

 

출처: codevang.tistory.com/106

 

객체 값 출력_toString 메소드 오버라이딩

[ toString 메소드 ] 기본 상속된 Object 클래스의 메소드 객체가 가진 정보를 문자열로 만들어 출력 인스턴스 출력 시 Object.hashCode()로 생성된 해시값을 문자열로 반환시켜줌​ 인스턴스의 값을 출력

codevang.tistory.com

2. equals() 메서드

equals 메서드

@Override로 재정의 하지 않으면 그 클래스의 인스턴스는 오직 자기 자신과만 같게 된다.

Java equals()

Object 클래스에 정의된 equals()는 다음과 같다.

public boolean equals(Object obj) { return (this == obj); }

즉, 오직 자기 자신과만 같다고 인식한다.

언제 equlas를 재정의 해야 할까?


  • 논리적 동치성을 확인해야 하는데 상위 클래스의 equals가 논리적 동치성을 비교하도록 재정의 되어있지 않을때
  • 주로 값 클래스 : Integer, String처럼 값을 표현하는 클래스
  • 두 값 객체를 equals로 비교한다는 것은 객체가 같은지가 아니라 값이 같은지 알고 싶은 것이다.
  • equals가 논리적 동치성을 확인하도록 재정의 해두면, 그 인스턴스 값의 비교가 가능하고 Map의 key와 Set의 원소로 사용할 수 있다.

값 클래스 중 equals를 재정의하지 않아도 되는 경우

인스턴스가 둘 이상 만들어지지 않음을 보장하는 클래스

  • ex) Enum
  • 이런 클래스에서는 논리적으로 같은 인스턴스가 2개 이상 만들어지지 않는다.
  • 따라서 논리적 동치성과 객체 식별성이 사실상 똑같은 의미가 된다.
  • 이런 경우 Object의 equals가 논리적 동치성까지 확인해준다고 볼 수 있다.

출처: velog.io/@sonypark/Java-equals-hascode-%EB%A9%94%EC%84%9C%EB%93%9C%EB%8A%94-%EC%96%B8%EC%A0%9C-%EC%9E%AC%EC%A0%95%EC%9D%98%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C

 

[Java] equals() & hascode() 메서드는 언제 재정의해야 할까?

예를 들어, 아래와 같이 값이 Menu 클래스가 있다고 하자.두 개의 Menu객체(friedChicken, friedChicken2)는 name과 price가 서로 같은 객체 지닌다. 위 테스트 코드를 실행한 결과는 다음과 같다.테스트가 실

velog.io

 

 

 

 

 

 

 

올인원 패키지 : JAVA 웹 개발 마스터👉https://bit.ly/35aoeAW