** 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 |