[23.01.16] 59일차 [백엔드]

W·2023년 1월 16일
0

국비

목록 보기
86/119

기본 클래스

Object 클래스

모든 클래스의 부모(extends Object)

  • java.lang 패키지(폴더) : 기본 폴더(자동 스캔)
  • 자바 오픈소스
  • C:\Program Files\ojdkbuild\java-11-openjdk-11.0.15-1\lib\src.zip

java.lang.Object클래스

모든 클래스의 최상위 클래스 Object

  • .toString() : 객체 문자열 표현 반환, 재정의 객체 설명, 멤버변수 출력
  • .equals() : 기억장소(인스턴스) 동일 여부 반환
  • getClass() 등등

.toString

package test;

public class Book {
	// 클래스 Book
	// 멤버변수 int bookNumber, String bookTitle 
	// 생성자 (두 멤버변수 받는 생성자)
	int bookNumber;
	String bookTitle;
	
	public Book(int bookNumber, String bookTitle) {
		this.bookNumber = bookNumber;
		this.bookTitle = bookTitle;
	}
	
}
package test;

public class Test1 {

	public static void main(String[] args) {

		// 객체생성
		// 참조변수 출력
		// 참조변수.toString() 출력
		
		Book b = new Book(1,"어린왕자");
		
		System.out.println(b); // test.Book@7c30a502
		System.out.println(b.toString()); // test.Book@7c30a502
		
	}
}
  • 부모클래스 Object 클래스 안에 toString() 메서드 호출
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
  • book 클래스에서 부모 메서드 재정의
public String toString() {
	return bookNumber+","+bookTitle;
  • Main
Book b = new Book(100,"어린왕자");

System.out.println(b);// 100, 어린왕자
System.out.println(b.toString()); // 100, 어린왕자

단축키 이용하기

  • Alt + Shift + s -> 대문자 S
// alt+shift+s 대문자 S
	@Override
	public String toString() {
		return "Book [bookNumber=" + bookNumber + ", bookTitle=" + bookTitle + "]";
	}

자동으로 생성됨

  • Main
Book b = new Book(100,"어린왕자");

System.out.println(b);// Book [bookNumber=100, bookTitle=어린왕자]
System.out.println(b.toString()); // Book [bookNumber=100, bookTitle=어린왕자]

.equals

equals() 메서드
주소에 해당하는 실제 기억장소 값이 (물리적) 같다

Book book1 = new Book(1,"삼국지");
System.out.println(book1);
	
Book book2 = new Book(1,"삼국지");
System.out.println(book2);
	
// 주소비교
System.out.println(book1==book2); // false
// 주소에 해당하는 인스턴스(기억장소) 비교
System.out.println(book1.equals(book2)); // false
	
Book book3 = book1;
// 주소에 해당하는 인스턴스(기억장소) 비교
System.out.println(book1==book3); // true
System.out.println(book1.equals(book3)); // true
  • Student 클래스
package test;

public class Student {
	//멤버변수
	String name;
	int number;
	//생성자
	public Student(String name,int number ) {
		this.name=name;
		this.number=number;
	} 
}
  • Main
Student hong1 = new Student("홍길동",100);
Student hong2 = new Student("홍길동",100);
Student hong3 = hong1;
		
System.out.println(hong1==hong2); // false
System.out.println(hong1.equals(hong2)); // false
		
System.out.println(hong1==hong3); // true
System.out.println(hong1.equals(hong3)); // true

//String, Integer equals()
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1==str2); // false
// equals() 재정의 => 기억장소는 틀려도 내용 일치하면 true
System.out.println(str1.equals(str2)); // true
Integer i1 = new Integer(100);
Integer i2 = new Integer(100);
System.out.println(i1==i2); // false
// equals() 재정의 => 기억장소는 틀려도 내용 일치하면 true
System.out.println(i1.equals(i2)); // true
  • Student 클래스에서 equals 메서드 재정의 하기
    학생번호 같으면 true
@Override
public boolean equals(Object obj) {
	if(obj instanceof Student) {
		Student student=(Student)obj;
		if(this.number == student.number) {
			return true;
		}else {
			return false;
		}
	} return false;

}
Student hong1 = new Student("홍길동",100);
Student hong2 = new Student("홍길동",100);
System.out.println(hong1==hong2); // false
System.out.println("재정의 :"+hong1.equals(hong2)); // true

0개의 댓글