1. toString() 메서드란?
객체의 문자열 표현을 반환하는 역할을 한다.
Object클래스에 구현된 toString()메서드는 "클래스명@해시코드"와 같은 형태의 문자열을 반환하나,
대부분의 클래스는 이 메서드를 오버라이딩하여 해당 객체의 정보를 잘 나타내는 문자열로 수정
toString() 메서드는 객체의 정보를 문자열로 표현하기 위해 주로 사용되며,
디버깅이나 출력할 때 유용하다.
ex. Person 클래스가 있다면 Person 클래스에서는 toString() 메서드를 오버라이딩하여
"이름: [이름], 나이: [나이]"와 같은 형태의 문자열을 반환하도록 만들 수 있다.
예시
package ex08;
class Account extends Object {
private String author;
private int number;
private int balance;
public Account(String author, int number, int balance) {
this.author = author;
this.number = number;
this.balance = balance;
}
@Override
public String toString() {
return "Account{" +
"author='" + author + '\'' +
", number=" + number +
", balance=" + balance +
'}';
}
}
public class ObEx01 {
public static void main(String[] args) {
Account account = new Account("홍길동", 1111, 1000);
System.out.println(account);
System.out.println(account.toString());
System.out.println(account.getClass());
System.out.println(account.hashCode());
}
}

toString() 메서드는 Object 클래스에 정의된 메서드 중 하나
+) return

turnoff 메소드는 return 값이 없어서 에러남!

void를 지우고 return 값을 넣어줬더니 정상적으로 작동 (출력하는건 return값이 있어야함)
System.out.println()
의 인자로 전달하면, 반환값이 없기 때문에 출력할 내용이 없어 오류가 발생. 모니터에 출력하려거든 return+) toString

toString()은 객체를 호출하면 자동으로 실행하게 해주는 자바 문법이다.
System.out.println(myLamp); 를 쓰면, DeskLamp 클래스에 toString 메소드가 있기 때문에
turnOn과 turnOff를 무시하고 toString()을 실행하게 된다.
원래라면, 10번 라인처럼 System.out.println(myLamp.toString2()); 이렇게 접근하는게 맞다.
개발자가 생성자를 하나도 정의하지 않으면 자바 컴파일러는 기본 생성자를 자동으로 만든다. 이때, 모든 멤버 변수들은 기본 값으로 초기화 된 상태로 heap에 뜬다.
* boolean은 기본값이 false이기 때문에, DeskLampTest 클래스에 7번, 9번 라인이 없으면
mylamp를 호출했을 때 항상 ‘꺼짐’ 상태로 나온다.
Share article