[자바] 실전자바(객체, 클래스) [240110]

brand_mins·2024년 1월 10일

Java

목록 보기
37/47

1. 객체 사용

  • 클래스를 통해 객체를 생성하려면 먼저 메모리에 존재하는 객체에 접근해야 함.
  • 객체를 접근하려면 .(주소연산자)를 사용하면 된다.
  • 이 키워드는 변수에 들어있는 참조값을 읽어서 메모리에 존재하는 객체에 접근한다.
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;

(1) 객체 vs 인스턴스

Student student1 = new Student();
  • 객체: 클래스에서 정의한 속성을 가진 실체이며 서로 독립적인 상태이다.
  • 인스턴스: 특정 클래스로부터 생성된 객체
  • 위 코드를 보았을떄 객체는 Student타입의 student1 변수를 객체라고 한다. 그리고, Student 타입을 우리는 인스턴스라고 부른다.

2. 배열 도입 - 시작

package class1;

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];
        students[0] = student1;
        students[1] = student2;

        System.out.println("이름: " + student1.name + " 나이: " + student1.age + " 성적: " + student1.grade);
        System.out.println("이름: " + student2.name + " 나이: " + student2.age + " 성적: " + student2.grade);

    }
}

(1) 코드분석

Student[] students = new Students[2];
  • Students 배열을 메모리에 새로 생성함. 생성한 참조값을 객체 students에 보관한다.
  • new Students[2]는 students[0]인 student1의 참조값이 들어있고 students[1]인 student2의 참조값이 들어있다.
  • students 객체의 참조값은 해당 배열값에 접근하여 대입한다.
  • 자바에서 대입은 항상 변수에 들어있는 값을 복사해서 전달함.

3. 배열 도입-리팩토링

  • for문을 사용해서 리팩토링 해보자.
package class1;

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문 도입
        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-each)
        for(Student s : students) {
            System.out.println("이름: " + s.name + " 나이: " + s.age + " 성적: " + s.grade);
        }
    }
}
profile
IT 개발자가 되기 위한 기록

0개의 댓글