Java/[inflearn] 자바 기본

[김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17, p24-27)

줌인. 2024. 2. 14. 23:20

▶ 배열의 선언과 생성 이해

https://zoooom-in.tistory.com/44

 

[김영한_자바입문][9.배열] 배열의 선언과 생성 이해하기 (p.2-7)

배열 선언은 아파트 부지 확보, 생성은 몇 개의 아파트를 확보할 것인지 배열의 값 할당은 부지를 참조해 실제 준공일을 기입한다. 할당 전까지는 부지 주소만 참조되어 나타난다. [코드 읽기 전

zoooom-in.tistory.com

 

1. 배열 이해하기

[p.14 / ClassStart2_배열 발췌]

public static void main(String[] args) {
    String[] studentsName = new String[2];
    studentsName[0] = "학생1";
    studentsName[1] = "학생2";

    System.out.println(studentsName); //참조값
    System.out.println(studentsName[0]); //부지 위치 기반 데이터 입력
    System.out.println(studentsName[1]); //부지 위치 기반 데이터 입력
}

 

*배열 도식화 : 위치를 알고 찾아가야 부지에 알맞은 건물을 지을 수 있다.

String[] studentsName = new String[2];

- String 타입의 메모리 공간 2개를 확보한다.

- String 타입의 'studentsName' 변수 선언 후, 2개의 메모리 공간을 가리키는 위치(참조값)를 변수에 전달한다.

- 참조값을 통한 데이터 접근이 가능하다.

   1) studentsName[0] = "학생1" : 배열의 특정 인덱스에 값을 할당한다.

   2) 출력 : studentsName[0] 

   ∴ 실제는 x001[0] = "학생1"

>> 출력값

[Ljava.lang.String;@b4c966a
학생1
학생2

 

▶ 클래스 도입 / 객체 도입 / 배열 사용

https://zoooom-in.tistory.com/48

 

[김영한_자바기본][1.클래스와 데이터] (보충) 클래스 도입/객체 사용/ 배열 도입 (p.16-34)

▶ 클래스 도입, 객체 이해하기 https://zoooom-in.tistory.com/43 [김영한_자바기본][1.클래스와 데이터] 클래스 도입, 객체 이해하기(인스턴스) (p.15-23) Class는 설계도로, 객체(인스턴스)는 설계도를 구현

zoooom-in.tistory.com

 클래스 도입, 객체 이해하기

https://zoooom-in.tistory.com/43

 

[김영한_자바기본][1.클래스와 데이터] 클래스 도입, 객체 이해하기(인스턴스) (p.15-23)

Class는 설계도로, 객체(인스턴스)는 설계도를 구현한 설계툴로 보자 정보 참조는 설계툴을 통해 이루어지며, 입력 전까지는 설계툴에는 원본(설계도면) 위치만 뜬다. [코드 읽기 전, 이해 도모를

zoooom-in.tistory.com

 


 

2. 클래스 도입 이해하기 (변수선언 / 객체 생성 / 참조값 보관)

[p.16 / ClassStart3] 객체 생성

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;

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

 

*객체 도식화 : 위치를 알고 찾아가야 설계도 부품에 걸맞은 건물을 지을 수 있다.

Student student1 = new Student();

- `Student` 클래스를 기반으로 새로운 객체(실체)를 생성한다.

- 새로운 객체는 `Student` 클래스를 기반으로 만들어지며, 클래스의 템플릿에 따라 메모리 공간이 할당된다.

- student1 과 student2는 서로 각각의 다른 객체로써, 다른 참조값을 가진다.

- 따라서 student1라는 변수를 기반으로 실체의 위치를 찾고(참조값), 해당 변수를 이용하여 값을 대입한다.

Student student2 = new Student();

 

>> 출력값

이름 : 학생1, 나이 : 15, 성적 : 90
이름 : 학생2, 나이 : 16, 성적 : 80

 


▶ 클래스 도입 / 객체 도입 / 배열 사용

https://zoooom-in.tistory.com/48

 

[김영한_자바기본][1.클래스와 데이터] (보충) 클래스 도입/객체 사용/ 배열 도입 (p.16-34)

▶ 클래스 도입, 객체 이해하기 https://zoooom-in.tistory.com/43 [김영한_자바기본][1.클래스와 데이터] 클래스 도입, 객체 이해하기(인스턴스) (p.15-23) Class는 설계도로, 객체(인스턴스)는 설계도를 구현

zoooom-in.tistory.com

 

3. 배열과 클래스의 이해

[p.24 / ClassStar4]

public static void main(String[] args) {
    Student[] students = new Student[2];
    Student student1 = new Student();
    student1.name = "학생1";
    student1.age = 15;
    student1.grade = 90;
    students[0] = student1;

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

    for (Student student : students) {
        System.out.println("이름 : " + student.name + ", 나이 : " + student.age + ", 성적 : " + student.grade);
    }
}

- student1는 참조값 x005, student2는 참조값 x007를 가진다.
- 이를 students라는 배열에 값을 담으면 배열 변수는 x001라는 참조값을 가진다.

- x005의 참조값 안에는 x001과 x002가 있다.
- 즉 향상된 for문 안으로 들어가서 확인해보면, students는 x005이고, student는 x001과 x002이다.

- 따라서 x001과 x002에 인덱스를 선언한다면 x001 = x005[0], x002 = x005[1]로 볼 수 있다.

 

*클래스 배열 도식화 : 위치를 알고 찾아가야 설계도 부품에 걸맞은 건물을 → 알맞은 부지에 지을 수 있다.

students[0] = student1;

- 해당 코드를 살펴보면 설계도면을 구현한 내역을 첫번째 동호수에 건물을 짓겠다는 의미다.

- `student1` 객체를 생성하고 그 객체를 가리키는 참조값(위치)을 변수 `students`의 첫 번째 인덱스에 할당한다.

- `student1` 객체의 참조값은 예를 들어 `x005`라고 가정한다.
- `students` 배열의 참조값은 다른 위치(예: `x001`)를 가리키고 있다.
- 따라서 첫 번째 인덱스 `x001[0]`에 `x005`를 할당한다.

 

*내역 가시화 : 배열 접근 → 객체 접근

1) 향상된 for문 사용이 가시화하기 좋다.

for (Student student : students) {
    System.out.println("이름 : " + student.name + ", 나이 : " + student.age + ", 성적 : " + student.grade);
}

 

2) 이해 도모를 위한 일반 for문 : 쉽게 보면 하나의 큰 틀안에 두가지를 꺼내는 것

for (int i = 0; i < students.length ; i++) {
    System.out.println("이름 : " + students[i].name +
            ", 나이 : " + students[i].age + ", 성적 : " + students[i].grade);
}

- x001 변수 'students' 내부에 있는 x005 'student1' 변수 호출

- x005를 호출하기 위해선 "."을 사용해야 한다.

- 즉 배열의 내역을 확인하기 위해 더 들어가서 객체의 내역을 부르면 된다고 이해하면 된다.

 

>> 출력값

이름 : 학생1, 나이 : 15, 성적 : 90
이름 : 학생2, 나이 : 16, 성적 : 80
728x90