메소드 (equals(), hashcode())

이진석·2022년 8월 11일
1
post-thumbnail

20220811

한 번에 끝내는 Java/Spring 웹 개발 마스터

  • 모든 클래스는 Object 클래스를 상속받는다는 부분을 배우게 되었다.
  • java.lang.object클래스를 모든 클래스가 최상위 클래스로 상속받고 있고, 그 중 일부를 재정의해서 사용하는 것임을 수업을 통해서 알게 되었다.

package ch01;

class Book {
	private String title;
	private String author;
	
	public Book(String title, String author) {
		this.title = title;
		this.author = author;
	}

	@Override
	public String toString() {
		return title +", "+ author;
	}
	
}

public class BookTest {

	public static void main(String[] args) {
		
		Book book = new Book("전지적 독자 시점", "싱숑");
		
		System.out.println(book);
		
		String str = new String("test");
		System.out.println(str);
	}
}

index[저장 위치] = hash해쉬함수[객체 정보]

  • equals() 메소드: 주소값이 같으면 논리적으로 같다고 true / false를 판단
  • hashcode() 메소드: 인스터스의 저장 주소값을 반환한다.

package ch02;

public class Student {

	private int studentNum;
	private String studentName;
	
	public Student(int studentNum, String studentName) {
		this.studentNum = studentNum;
		this.studentName = studentName;
	}

	@Override
	public String toString() {
		return studentName + "학생의 번호는 " + studentNum;
	}

	@Override
	public boolean equals(Object obj) {
		
		if(obj instanceof Student) {
			Student std = (Student)obj;
			if(this.studentNum == std.studentNum)
				return true;
			else
				return false;
		} 
		return false;
	}

	@Override
	public int hashCode() {

		return super.hashCode();
	}
}

package ch02;

public class StudentTest {

	public static void main(String[] args) {

		Student std1 = new Student(100, "Lee");
		Student std2 = new Student(100, "Lee");
		
		System.out.println(std1 == std2);	
		System.out.println(std1.equals(std2));	
		
		System.out.println(std1.hashCode());
		System.out.println(std2.hashCode());
		
		String str1 = new String("abc");
		String str2 = new String("abc");
		
		System.out.println(str1.equals(str2));
		
		System.out.println(str1.hashCode());
		System.out.println(str2.hashCode());
		
		Integer i = 100;
		System.out.println(i.hashCode()); 
	}
}

  • 위 코드들을 통해서 equals와 hashcode를 실습해 보았다.
profile
혼자서 코딩 공부하는 전공생 초보 백엔드 개발자 / https://github.com/leejinseok0614

0개의 댓글