본문 바로가기

JAVA/DAY 18 _ 23.09.11

Object Class

** Object클래스의 toString() 메서드를 오버라이드하여 객체의 문자열 표현을 정의
// 객체가 가진 주요 정보를 모두 반환하는 것이 좋음
// 이상적으로는 스스로를 완벽히 설명하는 문자열이어야 함!
// -> 해당 객체를 출력하거나 문자열로 변환할 때 유용
// -> 또한 디버깅 목적으로 객체의 내용을 확인하는 데도 도움이 됨

 

 

// Date에서의 toString호출

Date d = new Date();			
System.out.println(d);			// Mon Sep 11 09:32:22 KST 2023 

// Q. d는 왜 이렇게 나올까? 주소값이 아니라
// A. Date 클래스에서는 toString() 메서드가 오버라이드(Override)되어 있어서,
// Date 객체를 출력할 때 해당 객체의 내부 정보를 포함하는 문자열 표현이 반환됨

 

 

// toString 예시

public class Main_ObjectClass {

	public static void main(String[] args) {

		// Object Class : 모든 클래스의 최상위 부모
		
		AAA a = new AAA();
		System.out.println(a);			// p1.AAA@2a556333 --> 하이

//		System.out.println() 메서드는 인자로 전달된 객체를 출력할 때
//		해당 객체의 toString() 메서드를 자동으로 호출합니다.
//		이것이 자바에서 객체를 문자열로 출력할 때 사용되는 일반적인 메커니즘입니다.
//
//		따라서 System.out.println(a) 코드를 실행하면
//		a 객체의 toString() 메서드가 자동으로 호출되며,
//		toString() 메서드가 반환하는 문자열이 표준 출력에 출력됨
		
		
		
		

		String str = a.toString();
		System.out.println(str);		// p1.AAA@2a556333 --> 하이
		
		// Q. AAA class에서 이렇게 리턴해준다고 정의해놨어?
//		public String toString() {
//		return "하이";
//		}	
		// A. 그럼 이제 a랑 str의 주소값이 아니라, '하이'가 출력된다.
class AAA{
	
	int v1;
	int v2;


//	public String toString() {
//		return "하이";
//	}
	
	public String toString() {
		
		return "v1 = " + v1 + ", v2 = " + v2;
	}
	// 만약 매서드에 toString을 쓴다? 그럼 필드값이 뭔지 알려주는 용도로 사용!!! (답정너 코드)
	
}

 

'JAVA > DAY 18 _ 23.09.11' 카테고리의 다른 글

Wrapper Class2  (0) 2023.09.11
Wrapper Class  (0) 2023.09.11
Hash Code2  (0) 2023.09.11
Hash Code  (0) 2023.09.11
Object _ Equals Overiding  (0) 2023.09.11