9osari.log
← 목록으로

[JAVA] 클래스와 객체

2025년 3월 29일 · #java#김영한-java-기본

클래스는 개념을 만드는 것.

변수를 사용해 학생의 이름, 나이, 성적을 출력해 보자

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);
    }

변수를 사용하면 학생이 늘어날 때 마다 변수를 추가로 선언해야 하고 추가해줘야 하는 번거로움이 있다.

배열을 사용해 보자

public static void main(String[] args) {
        String[] studentNames = {"학생1", "학생2", "학생3", "학생4"};
        int[] studentAge = {15,16,17,18};
        int[] studentGrade = {90,80,70,60};

        for(int i = 0; i < studentNames.length; i++) {
            System.out.println("이름: " + studentNames[i] + "나이 : " + studentAge[i] + "성적: " + studentGrade[i]);
        }
    }

배열을 사용하면 학생이 늘어나도 변수를 추가하지 않고 배열에 학생 데이터만 추가해주면 된다! 하지만 배열을 사용하면 학생이 1000명이라 생각했을때 학생567의 데이터를 정확하게 찾아야 한다. 이렇게 생각하면 실수할 가능성이 매우 높기 때문에 클래스를 사용해야 한다!

사람이 관리하기 좋은 방식은 학생이라는 개념을 하나로 묶는 것이다.

클래스 사용

public class Student {
    String name;
    int age;
    int grade;
}

학생이라는 클래스는 이름, 나이, 성적 변수를 가진다. 이렇게 클래스에 정의한 변수들을 맴버 변수, 필드 라 한다.

학생 클래스를 사용하는 코드

 public static void main(String[] args) {
        Student student1;
        student1 = new Student();   //객체 또는 인스턴스 student1의 메모리를 확보
        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);
        System.out.println(student1);
        System.out.println(student2);
    }

1. 변수 선언

변수 선언

Student student1; //Student 타입을 받을 수 있는 변수 선언 하고 Student 타입의 객체(인스턴스)를 받을 수 있다. int는 정수,String은 문자를 담을 수 있는 것과 같다.

2. 객체 생성

객체 생성

3. 참조값 보관

참조값 보관

Student student1 = new Student(); //1. Student 객체 생성
Student student1 = x001; //2. new Student()의 결과로 x001 참조값 반환
student1 = x001; //3. 최종 결과

student2 까지 생성하면 Student 객체(인스턴스) 가 메모리에 2개 생성되어 구분하여 사용할 수 있음!

참조값 흐름

배열에 참조값 대입

변수에는 인스턴스 자체가 들어 있는게 아니라 인스턴스의 위치값을 가르키는 참조값이 들어있어 “=” 할 때 인스턴스가 복사되는게 아니라 참조값만 복사된다!

public static void main(String[] args) {
        Student student1 = new Student();   //객체 또는 인스턴스 student1의 메모리를 확보
        student1.name = "학생1";
        student1.age = 15;
        student1.grade = 90;

        Student student2 = new Student();
        student2.name = "학생2";
        student2.age = 16;
        student2.grade = 80;

        Student[] students = {student1, student2};   //배열에 참조값 대입

        //향상된 for문 사용
        for(Student s : students) {
            System.out.println("이름: " + s.name + "나이: " + s.age + "성적: " + s.grade);
        }

    }

📝 기억해야 할 것


출처: 김영한의 실전 자바 - 기본편

···
← PREV [JAVA] JVM의 동작원리 NEXT → [JAVA] 기본형과 참조형