Java

클래스 (객체) - 메모리

Domae_ 2023. 12. 18. 16:05
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