Object 클래스

전윤지·2021년 5월 26일
0

JAVA

목록 보기
1/10

1. Object Class

  • Java의 최상의 클래스
  • 따로 import 하지 않아도 사용 가능 (자동 import)
  • java.lang.Object

2. Object Class의 메소드

1) toString()

  • 기본 동작 : 객체의 해시코드 출력

    Book book = new Book("깊은 밤 부엌에서", "모리스 샌닥");
    System.out.println(book);
    
    // 출력 : com.yoon._object.Book@35bbe5e8
    • 클래스의 이름@해시코드 형태
  • override : 객체의 정보를 문자열로 표현하고자 할 때

    String str = new String("Apple");
    System.out.println(str);          // Apple
    • String 클래스는 toString()을 override하고 있기 때문에, 객체가 저장하고 있는 문자열이 출력 됨
    • System.out.println(str) = System.out.println(str.toString())

2) hashCode()

  • 해당 객체의 해시 코드 값 (인스턴스가 저장 된 가상머신의 주소) 반환

3) equals()

  • 두 인스턴스를 비교 함
  • 물리적으로 다른 메모리에 위치한 객체라도 논리적으로 동일함을 나타내기 위해 사용
public class EqualsTest {
	public static void main(String[] args) {

		String str1 = new String("abc");
		String str2 = new String("abc");

		System.out.println(str1==str2);            // false
		System.out.println(str1.equals(str2));     // true
	}
  • str1==str2에서의 ==는 주소값이 동일한지 검사하는 것

    즉, 물리적으로 동일한지 확인하는 것

    str1과 str2는 다른 주소에 있기 때문에 false가 반환 됨

  • str1.equals(str2)에서 equals()는 논리적 동일성을 확인 하는 것

    str1과 str2의 인스턴스의 값는 abc로 같기 때문에 true 반환

4) wait()

  • 다른 스레드가 notify()나 notifyAll() 메소드를 실행 할 때 까지, 현재 스레드를 대기시킴
  • 갖고 있던 고유 lock 해제시킴
    • 고유 lock (intrinsic lock)
      • Java의 모든 객체가 가지는 lock
      • synchronized로 고유 lock 사용
  • 동기화 된 블록 내에서만 사용 가능 (synchronized블록 내에서)

5) notify()

  • wait() 중인 Thread 중 하나를 깨움
  • 동기화 된 블록 내에서만 사용 가능 (synchronized블록 내에서)

6) notifyAll()

  • 모든 Thread를 깨움
  • 동기화 된 블록 내에서만 사용 가능 (synchronized블록 내에서)

0개의 댓글