-
Java - 기본 클래스(Object 클래스, Object의 toStirng()메서드)1개발언어/JAVA 2023. 11. 4. 15:02
모든 클래스이 최상위 클래스 Object
컴파일 과정에서 오른 쪽과 같이 extends Object가 자동으로 쓰인다. 직접 만드는 커스텀 클래스뿐 아니라 기존 JDK에서 제공하는 클래스도 모두 Object클래스에서 상속을 받는다.
모든 클래스가 Object클래스를 상속받았으므로 Object의 메서드를 사용할 수 있고, 재정의할 수도 있고, Object형을로 반환할 수도 있다. 자바로 프로그래밍을 하다 보면 클래스가 Object형으로 변환되는 경우도 있고, Object에서 원래 클래스형으로 다운 캐스팅되는 경우도 있다.
주로 사용되는 Object 메서드
메서드 설명 String toString( ) 인스턴스를 문자열로 표현하여 반환한다. 재정의하여 인스턴스에 대한 설명이나 특정 멤버 변수 값을 반환한다. boolean equals(Object obj) 두 인스턴스가 동일한지 여부를 반환한다. 재정의하여 논리적으로 동일한 인스천스임을 정의할 수 있다. int hashCode( ) 인스턴스의 해시 코드 값을 반환한다. Object clone() 객체를 복제하여 동일한 멤버 변수 값을 가진 새로운 인스턴스를 생성한다. Class getClass( ) 인스턴스의 Class 클라스를 반환한다. void finalize( ) 인스턴스가 힙 메모리에서 제거될 대 가비지 컬렉터(GC)에 의해 호출되는 메서드이다. 네트워크 연결 해제, 열려 있는 파일 스트림 해제 등을 구현한다. void wait( ) 멀티스레드 프로그램에서 사용하는 메서드이다. 스레드를 '기다리는 상태'(non runnable)로 만든다. void notify( ) wait( )메서드에 의해 기다리고 있는 스레드(non runable 상태)를 실행 가능한 상태(runnable)로 가져온다. Object 메서드 중에는 재정의할 수 있는 메서드도 있고, 그렇지 않은 메서드도 있다.
Object 클래스의 toString()메서드
package object; class Book { int bookNumber; String bookTitle; Book(int bookNumber, String bookTitle) { this.bookNumber = bookNumber; this.bookTitle = bookTitle; } } public class ToStringEx { public static void main(String[] args){ Book book1 = new Book(200,"개미"); //인스턴스 정보(클래스 이름,주소 값) System.out.println(book1); //object.Book@6a5fc7f7 //toString() 메서드로 인스턴스 정보(클래스 이름. 주소 값)를 보여줌 System.out.println(book1.toString()); //object.Book@6a5fc7f7 } }
System.out.println()출력문에 참조 변수를 넣으면 인스턴스 정보가 출력되는데, 이때 자동으로 호출되는 메서드가 toString()이다. 여기서 사용되는 toString()은 Book클래스의 메서드가 아닌 Object 클래스의 메서드이다.
getClass().getName() + '@' + Integer.toHexString(hashiCode());
Object 클래스의 toString( )메서드 원형은 위 코드와 같다.
String과 Integer 클래스의 toString( )메서드
toStirng()메서드가 호출된 경우라도 출력 결과가 '클래스 이름@해시 코드 값'이 아닌 경우가 있다.
String str = new String("test"); System.out.println(str); //test Integer il = new Integer(100); System.out.println(i1); //100
String과 Integer 클래스는 toStirng( )메서드를 미리 재정의해 두었기 때문입니다. JDK에서 제공하는 클래스 중에는 toString()메서드를 미리 재정의한 클래스가 많다.
Book 클래스에서 toString()메서드 직접 재정의하기
package object; class Book { int bookNumber; String bookTitle; Book(int bookNumber, String bookTitle) { this.bookNumber = bookNumber; this.bookTitle = bookTitle; } @Override public String toString() { return bookTitle + "," + bookNumber; } } public class ToStringEx { public static void main(String[] args){ Book book1 = new Book(200,"개미"); System.out.println(book1); //개미,200 System.out.println(book1.toString()); //개미,200 } }
[출저 - Do it! 자바 프로그래밍 입문 , 박은종]
http://www.easyspub.co.kr/20_Menu/BookView/A001/267/PUB
'개발언어 > JAVA' 카테고리의 다른 글
Java - 기본 클래스(String 클래스)4 (0) 2023.11.06 Java - 기본 클래스(Objectd의 equals()메서드)2 (0) 2023.11.04 Java - 인터페이스(인터페이스와 다형성)2 (0) 2023.11.04 Java - 추상 클래스(템플릿 메서드 응용하기)4 (1) 2023.11.04 Java - 추상 클래스(템플릿 메서드)3 (0) 2023.11.03