🌱 오늘의 주제 : Java - 객체를 문자로 표현하는 toString() 사용하기
🌱 Java - 객체를 문자로 표현하는 toString() 사용하기
- toString()은 객체가 문자로 취급될 때 사용되는 메서드로 객체가 자신의 정체성을 드러내는 하나의 수단
- 클래스에 public 접근 제한자를 가지고 String을 반환하는 toString() 메서드를 정의하면 됩니다. @Override 에노테이션은 사용하지 않아도 메서드를 재정의 할 수 있지만 되도록이면 사용해 주세요.
- 모든 클래스는 toString()을 사용할 수 있고, 자신에 맞게 사용하기 위해서는 재정의(Overriding)를 해야 합니다.
class Person {
private String name;
private String job;
public Person(String name, String job) {
this.name = name;
this.job = job;
}
@Override
public String toString() {
return "내 이름은 " + name + "이고, 직업은 " + job + "입니다.";
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("홍길동", "의적");
System.out.println(person);
// 내 이름은 홍길동이고, 직업은 의적입니다.
}
}
System.out.println(person);
이렇게 person객체 이름만 호출하면, toString( ) 이 불려지고, 문자화되어 표현 할 수 있습니다.
🌱 Iterator을 이용해 toString( ) 호출하기.
package map_quiz;
public class Person {
// 필드
private String name;
private int birthDate;
// 메소드
// Setter
public void setName(String name) { // output : void // input : String name
this.name = name;
}
public void setbirthDate(int birthDate) {
this.birthDate = birthDate;
}
// Getter
public String getName() {
return this.name;
}
public int getBirthDate() {
return this.birthDate;
}
@Override
public String toString() { // String을 단순 Object에 포함된 메서드가 아닌 Student에 들어있는 각필드 값들의 정보를 문자열로 출력할 수 있도록 재정의 하였다.
return "이름 : " + this.name + ", 생년월일: " + this.birthDate;
}
}
package map_quiz;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Quiz02 {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
List<Person> personList = new ArrayList<>();
while (true) {
System.out.println("1:입력 2: 출력 3:삭제 4: 종료");
int num = scan.nextInt();
if (num == 1 ) {
// 입력
// ** 선생님
System.out.print("이름을 입력하세요: ");
String name = scan.next();
System.out.print("생년월일을 입력하세요: ");
int birthDate = scan.nextInt();
// 객체 생성
Person person = new Person(); // 반복문 안에 넣어야 됨. 사람 생성을 계속 해서..
person.setName(name);
person.setbirthDate(birthDate);
System.out.println(personList.add(person) ? "입력 성공 " : "입력 실패"); // 삼항 연산자
} else if (num == 2) {
// 출력 iterator // 2.출력: 과일이 있으면 출력하고, 아무것도 없을 경우 "비어있습니다." 라고 출력한다.
if (personList.isEmpty()) {
System.out.print("비어있습니다.");
continue;
}
Iterator<Person> iter = personList.iterator();
while (iter.hasNext()) {
Person person = iter.next(); // Person person은 클래스 Person을 가리키는 거라 밑에 toString 사용 가능?
System.out.println(person.toString()); // toString 생략 가능. 결국 toString()은 객체가 문자로 취급될 때 사용되는 메서드로 객체가 자신의 정체성을 드러내는 하나의 수단입니다.
}
} else if (num == 3) {
// 삭제
System.out.println("삭제할 사람의 이름을 입력하세요: ");
String deleteName = scan.next(); // String 이기 때문에 Person 리스트 못 지움.. 그래서 Iterator 이용.
Iterator<Person> iter = personList.iterator();
while (iter.hasNext()) {
Person person = iter.next();
if (deleteName.equals(person.getName())) {
iter.remove(); // 가리키는 애를 삭제하기 때문에 이렇게 나둬도 됨.
}
}
System.out.println("삭제했습니다.");
} else if (num == 4) {
// 종료
// System.out.println("종료합니다.");
// break; // 제일 가까이 있는 반복문을 빠져 나가는 것임.
} else {
// 잘못
// System.out.println("잘못 입력하셨습니다.");
}
}
} // main
}
- 위쪽 두번째 코드의 else if (num == 2) 부분에 보시면, 반복문을 통해 Person person 객체를 불러와 toString( ) 호출이 가능합니다.
while (iter.hasNext()) {
Person person = iter.next(); // Person person은 클래스 Person을 가리키는 거라 밑에 toString 사용 가능.
System.out.println(person.toString()); // toString 생략 가능. 결국 toString()은 객체가 문자로 취급될 때 사용되는 메서드로 객체가 자신의 정체성을 드러내는 하나의 수단입니다.
'Java' 카테고리의 다른 글
Java - 생성자에서 다른 생성자 호출하기 - this ( ) (0) | 2023.01.24 |
---|---|
Java - 생성자 (0) | 2023.01.24 |
Java - Map 컬렉션, List 컬렉션 - Iterator 반복문 사용법 (0) | 2023.01.19 |
Java - 참조형 매개변수 (0) | 2023.01.18 |
Java - 기본형 매개변수 (0) | 2023.01.18 |