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