SMALL
클래스 예제
1. 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90입니다.
2. 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80입니다.
3. 각 학생의 정보를 다음과 같은 형식으로 출력해야 합니다: "이름: [이름] 나이: [나이] 성적: [성적]"
4. 변수를 사용해서 학생 정보를 저장하고 변수를 사용해서 학생 정보를 출력해야 합니다.
예시 출력: ```
이름: 학생1 나이: 15 성적: 90
이름: 학생2 나이: 16 성적: 80
이 문제를 푸는 처음 방법으로는 아래와 같이 풀었다.
첫번째 코드
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);
하지만, 현재 이 코드의 문제점은 학생이 늘어날때 마다 변수를 추가하고 출력하는 코드가 길어져 가독성이 떨어지고
유지보수 및 코드 관리하기가 너무 어려운 부분이다.
두번째 코드
String[] studentNames = {"학생1", "학생2", "학생3", "학생4"};
int[] studentAges = {15, 16, 17, 20};
int[] studentGrade = {90, 80, 70, 60};
for (int i = 0; i < studentNames.length; i++) {
System.out.println("이름:" + studentNames[i] + " 나이:" + studentAges[i] + " 성적:" + studentGrade[i]);
}
배열을 사용한 코드 이지만 3가지의 변수에 따른 값의 순서가 밀리거나 틀리면 다른 값들을 출력할 위험성이 있고
안정성에 문제가 생긴다. 그러므로 좋은 코드는 아니다.
세번째 코드
public class Student {
String name;
int age;
int grade;
}
Student student1;
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;
System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성적:" + student1.grade);
System.out.println("이름:" + student2.name + " 나이:" + student2.age + " 성적:" + student2.grade);
그래서 객체를 도입하였다. Student 라는 클래스를 만들어 해당 객체를 생성한 후 그 객체의 값들을 수정하여 출력한 방법을 사용하였다.
정리
클래스는 설계도이고, 해당 클래스가 생성하면 메모리에 생성이 되여 그 해당 참조값을 변수에 저장하는것이다.
즉, 아래 구문은 객체를 생성하여 해당 메모리 참조값(주소)을 student1 에 저장하는 것이지, 해당 객체를 저장하는것이 아니다. 실제로는 객체를 생성하면 객체는 메모리에 어딘가에 생성이 되고 그 해당 참조값을 student1 에 저장하고 student1 에 접근하면 메모리에 있는 객체에 접근하여 사용하는것이다.
Student student1 = new Student();
반응형
LIST
'Java' 카테고리의 다른 글
기본형(int)과 참조형(Student) 매서드 호출 -2 (0) | 2023.12.18 |
---|---|
기본형(int)과 참조형(Student) 개념, 변수 대입 -1 (0) | 2023.12.18 |
제네릭 (0) | 2023.06.13 |
record (0) | 2023.05.16 |
Stream 클래스 (0) | 2023.05.03 |