package class1;
public class ClassStart1 {
public static void main(String[] args) {
String student1Name = "학생1";
int student1Age = 15;
int student1Grade = 90;
String student2Name = "학생2";
int student2Age = 16;
int student2Grade = 80;
System.out.println("이름: " + student1Name + " 나이: " + student1Age + " 성적: " + student1Grade);
System.out.println("이름: " + student2Name + " 나이: " + student2Age + " 성적: " + student2Grade);
}
}
학생 2명을 다루어야 하기 때문에 각각 다른 변수를 사용했다.
이 코드의 문제는 학생이 늘어날 때 마다 변수를 추가로 선언해야 하고, 또 출력하는 코드도 추가해야 한다.
→ 배열을 사용하여 학생이 추가되어도 코드 변경을 최소화 하자!
package class1;
public class ClassStart2 {
public static void main(String[] args) {
String[] studentNames = {"학생1", "학생2"};
int[] studentAges = {15, 16};
int[] studentGrades = {90, 80};
for (int i = 0; i < studentNames.length; i++) {
System.out.println("이름: " + studentNames[i] + " 나이: " + studentAges[i] + " 성적: " + studentGrades[i]);
}
}
}
한 학생의 데이터가 studentNames[], studentAges[], studentsGrades[] 라는 3개의 배열에 나누어져있다.따라서 데이터를 변경할 때 매우 조심해서 작업해야 한다. 예를 들어서 학생2의 데이터를 제거하려면 각각의 배열마다 학생2의 요소를 정확하게 찾아서 제거해주어야 한다.
한 학생의 데이터를 관리하기 위해 3개의 배열의 인덱스 순서를 항상 정확하게 맞추어야 한다.
사람이 관리하기 좋은 방식은 학생이라는 개념을 하나로 묶는 것이다. 그리고 각각의 학생 별로 본인의 이름, 나이, 성적을 관리하는 것이다. → 그래서 클래스가 필요하다!
Student 클래스
package class1;
public class Student {
String name;
int age;
int grade;
}
이렇게 클래스에 정의한 변수들을 멤버 변수, 또는 필드라 한다.
package class1;
public class ClassStart3 {
public static void main(String[] args) {
Student student1; // Student 변수 선언 (x001)
student1 = new Student(); // Student 인스턴스 생성 및 인스턴스 참조값 보관
student1.name = "학생1"; // . 을 통해 객체 값 대입
student1.age = 15;
student1.grade = 90;
Student student2 = new Student(); // (x002)
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
System.out.println("이름: " + student1.name + " 나이: " + student1.age + " 성적: " + student1.grade);
System.out.println("이름: " + student2.name + " 나이: " + student2.age + " 성적: " + student2.grade);
}
}