배열 도입
클래스를 사용하여 학생 데이터를 구조적으로 이해하기 쉽게 변경할 수 있었다.
System.out.println("이름:" + student1.name + " 나이: " + student1.age + " 성적: " + student1.grade);
System.out.println("이름:" + student2.name + " 나이: " + student2.age + " 성적: " + student2.grade);
하지만 코드를 보면 데이터를 출력하는 부분이 반복적으로 쓰이고 있다. 학생이 추가되면 코드도 늘어날 것이다. 배열을 사용하여 이 코드를 개선해보자.
배열을 사용한 코드
public class ClassStart4 {
public static void main(String[] args) {
Student student1 = new Student(); // 학생을 실제 메모리에 만든다.
student1.name = "학생1";
student1.age = 14;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 15;
student2.grade = 80;
Student[] students = new Student[2];
students[0] = student1;
students[1] = student2;
System.out.println("이름:" + students[0].name + " 나이: " + students[0].age + " 성적: " + students[0].grade);
System.out.println("이름:" + students[1].name + " 나이: " + students[1].age + " 성적: " + students[1].grade);
}
}
1. Student 클래스를 기반으로 student1, student2 인스턴스를 생성하고, 값을 할당한다.
2. Student를 담을 수 있는 배열을 생성한다.
- student1, 2는 참조값(주소)를 가지고 있다.
- 배열도 마찬가지로 참조값을 보관한다.
- 참조값을 대입하기 전에는 null로 초기화 된다.
- 배열을 생성하면 메모리에 공간이 생긴다. students 역시 배열의 주소값을 담고 있다.
- 배열에 값을 대입하면, 배열의 0번 인덱스에는 student1의 주소값이 1번 인덱스에는 student2의 주소값이 담기게 된다.
- 자바에서 변수의 대입(=)은 변수에 들어있는 값을 복사해서 전달한다.
배열 도입 - 리팩토링
배열을 도입했으니 코드를 리팩토링해서 반복되는 출력문을 개선해보자.
public static void main(String[] args) {
Student student1 = new Student(); // 학생을 실제 메모리에 만든다.
student1.name = "학생1";
student1.age = 14;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 15;
student2.grade = 80;
Student[] students = {student1, student2};
for(Student s : students) { //향상된 for문
System.out.println("이름:" + s.name + " 나이: " + s.age + " 성적: " + s.grade);
}
}
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 기본] 기본형과 참조형 - 활용 (0) | 2024.07.02 |
---|---|
[Java 기본] 기본형과 참조형 - 메서드 호출 (0) | 2024.07.02 |
[Java 기본] 기본형과 참조형 (0) | 2024.07.01 |
[Java 기본] 클래스, 객체, 인스턴스 (0) | 2024.07.01 |
[Java 기본] 클래스 (0) | 2024.07.01 |