배열 도입 - 시작
클래스와 객체 덕분에 학생 데이터를 구조적으로 이해하기 쉽게 변경할 수 있었다. 하지만 학생을 출력하는 부분에 있어 새로운 학생이 추가될 때마다 출력되는 부분을 함께 추가해야한다는 불편함이 있다.
배열을 사용하면 특정 타입을 연속한 데이터 구조로 묶어서 편리하게 관리할 수 있다.
Studnet 클래스를 사용한 변수들도 Student 타입이기 때문에 학생도 배열을 사용해서 하나의 데이터 구조로 묶어서 관리할 수 있다.
배열에 참조값 대입
- Stundent 변수를 2개 보관할 수 있는 사이즈 2의 배열을 만든다.
- Student 타입의 변수는 Student 인스턴스의 참조값을 보관한다. Student 배열의 각 항목도 Student 타입의 변수일 뿐이다. 따라서 Studnet 타입의 참조값을 보관한다.
- 배열에는 아직 참조값을 대입하지 않았기 때문에 참조값이 없다는 의미의 null 값으로 초기화 된다.
자바에서 대입은 항상 변수에 들어있는 값을 복사해서 전달한다.
student1, student2에는 참조값이 보관되어 있다. 따라서 이 참조값이 배열에 저장된다. 또는 studnet1, studnet2에 보관된 참조값을 읽고 복사해서 배열에 대입한다고 표현한다.
public class ClassStart4 {
public static void main(String[] args) {
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
Student[] students = new Student[2]; // 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);
}
}
※주의 ※
=> 변수에는 인스턴스 자체가 들어있는 것이 아니라 인스턴스의 위치를 가리키는 참조값이 들어있다.
따라서 대입( = )시에 인스턴스가 복사되는 것이 아니라 참조 값이 복사된다.
배열에 들어있는 객체 사용
배열에 들어 있는 객체를 사용하려면 먼저 배열에 접근한 다음 객체에 접근하면 된다.
for문 사용
public class ClassStart5 {
public static void main(String[] args) {
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
Student[] students = new Student[] {student1, student2};
for (int i = 0; i < students.length; i ++ ) {
System.out.println("이름" + students[i].name + "나이" + students[i].age + "등급" + students[i].grade);
}
}
}
for문 최적화 - 반복 요소를 변수에 담아서 처리
for (int i = 0; i < students.length; i ++ ) {
Student s = students[i];
System.out.println("이름" + s.name + "나이" + s.age + "등급" + s.grade);
}
향상된 for문
for (Student s : students) {
System.out.println("이름" + s.name + "나이" + s.age + "등급" + s.grade);
}
공부 내용: [인프런] 김영한의 실전 자바 - 기본편
'Java' 카테고리의 다른 글
[인프런] 변수와 초기화 (0) | 2024.05.20 |
---|---|
[인프런] 기본형과 참조형 (0) | 2024.05.20 |
[인프런] 클래스의 사용 및 크래스, 객체, 인스턴스의 정리 (0) | 2024.05.20 |
[인프런] 클래스가 필요한 이유와 클래스 도입 (0) | 2024.05.20 |
문자열 포함 여부 확인 ( contains , containsIgnoreCase ) (0) | 2024.05.01 |