Java 클래스 배열 선언 및 for문 리팩토링해보기

주어진 코드를 가지고 리팩토링을 진행한다.

Student.class

public class Student {
    String name;
    int age;
    int grade;
}
  • Student 의 기본 클래스를 정의

Main.class

리팩토링 대상이 되는 코드

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student();
        student1.name = "홍길동";
        student1.age = 18;
        student1.grade = 90;

        Student student2 = new Student();
        student2.name = "김철수";
        student2.age = 15;
        student2.grade = 80;

        //  배열 선언 및 초기화
        Student[] students = new Student[2];
        students[0] = student1;
        students[1] = student2;

        // for문
        for (int i = 0; i < students.length; i++) {
            System.out.println("이름: " + students[i].name + ", 나이: " + students[i].age + ", 성적: " + students[i].grade);
        }
    }
}

배열 생성과 선언

Student[] students = new Student[2];
students[0] = student1;
students[1] = student2;
  • 배열을 생성과 선언을 동시에 할 수 있다.
Student[] students = new Student[] { student1, student2 };
  • 코드 수를 줄여서 최적화하면 다음과 같이 작성할 수 있다.
Student[] students = { student1, student2 };

for문 개선하기

for (int i = 0; i < students.length; i++) {
    System.out.println("이름: " + students[i].name + ", 나이: " + students[i].age + ", 성적: " + students[i].grade);
}
  • println 코드가 너무 길어서 줄여보도록 한다.
for (int i = 0; i < students.length; i++) {
    Student s = students[i];
    System.out.println("이름: " + s.name + ", 나이: " + s.age + ", 성적: " + s.grade);
}
  • 향상된 for문 iter 처럼 사용할 수 있다.
for (Student s : students) {
    System.out.println("이름: " + s.name + ", 나이: " + s.age + ", 성적: " + s.grade);
}

전체 코드 보기

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student();
        student1.name = "홍길동";
        student1.age = 18;
        student1.grade = 90;

        Student student2 = new Student();
        student2.name = "김철수";
        student2.age = 15;
        student2.grade = 80;

        //  배열 선언 및 초기화
        Student[] students = { student1, student2 };

        // for문
        for (Student s : students) {
            System.out.println("이름: " + s.name + ", 나이: " + s.age + ", 성적: " + s.grade);
        }
    }
}