ArrayList 활용법 + toString()

김지수·2023년 6월 27일
ArrayList<Subject> subjectList = new ArrayList<Subject>();

이렇게 subjectList 가 생성되었다.

public void addSubject(String name, int score) {
		Subject subject = new Subject();
		
		subject.setName(name);
		subject.setScorePoint(score);
		
		subjectList.add(subject);
	}

여기에서 subjectList.add(subject); 는 어떻게 작동하는 걸까?

이 코드의 역할이 잘 이해되지 않아 열심히 예제 코드를 만들어 보았다.


아래는 subjectList에 객체가 추가되지 않은 경우와 추가된 경우의 예시 코드다.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Subject> subjectList = new ArrayList<>();

        // 객체가 추가되지 않은 경우
        System.out.println("=== 객체가 추가되지 않은 경우 ===");
        addSubject(subjectList, "Math", 90);
        printSubjectList(subjectList); 

				// 출력: []

        // 객체가 추가된 경우
        System.out.println("=== 객체가 추가된 경우 ===");
        addSubject(subjectList, "Science", 85);
        addSubject(subjectList, "English", 95);
        printSubjectList(subjectList); 

				// 출력: [Subject{name='Science', scorePoint=85}, 
        //       Subject{name='English', scorePoint=95}]
    }

-------------------------------------------------------------------------------

    public static void addSubject(List<Subject> subjectList, String name, int score) {
        Subject subject = new Subject();

        subject.setName(name);
        subject.setScorePoint(score);

        // subjectList에 객체 추가하지 않음
    }

    public static void printSubjectList(List<Subject> subjectList) {
        for (Subject subject : subjectList) {
            System.out.println(subject);
        }
    }
}

class Subject {
    private String name;
    private int scorePoint;

    public String getName() {
		return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getScorePoint() {
			return scorePoint;
		}
		public void setScorePoint(int scorePoint) {
			this.scorePoint = scorePoint;
		}

    @Override
    public String toString() {
        return "Subject{name='" + name + "', scorePoint=" + scorePoint + "}";
    }
}

위에서 toString() 메서드는 객체를 문자열로 표현하기 위해 사용된다.

주로 다음과 같은 상황에서 toString() 메서드가 호출되어 사용된다.


  1. 객체의 문자열 표현 출력

System.out.println(object)과 같이 객체를 출력하는 경우,
자동으로 toString() 메서드가 호출되어 객체의 문자열 표현이 출력된다.

Subject subject = new Subject("Math", 90);
System.out.println(subject);
// 출력: Subject{name='Math', scorePoint=90}

  1. 문자열 연결

문자열 연산자인 +를 사용하여 문자열을 연결할 때,
객체가 문자열로 변환되기 위해 toString() 메서드가 호출된다.

Subject subject = new Subject("Science", 85);
String subjectInfo = "Subject: " + subject;
System.out.println(subjectInfo);
// 출력: Subject: Subject{name='Science', scorePoint=85}

  1. 디버깅 목적

객체의 내부 상태를 확인하고 디버깅하기 위해 toString() 메서드를 호출하여 객체의 문자열 표현을 출력한다.

Subject subject = new Subject("English", 95);
System.out.println("Subject 정보: " + subject.toString());
// 출력: Subject 정보: Subject{name='English', scorePoint=95}

toString() 메서드를 오버라이딩하여 사용자 정의 객체를 원하는 형식의 문자열로 표현할 수 있다.

위의 예시에서도 Subject 클래스에서 toString() 메서드를 오버라이딩하여 객체의 정보를 원하는 형식으로 표현하고 있다.


실행 결과 요약

=== 객체가 추가되지 않은 경우 ===
[]
=== 객체가 추가된 경우 ===
Subject{name='Science', scorePoint=85}
Subject{name='English', scorePoint=95}
profile
안녕하세요

0개의 댓글