λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Today I Learned(TIL)/Java

Java 기본편 κ°•μ˜_ν΄λž˜μŠ€μ™€ 데이터

by carrot0911 2024. 11. 25.

ν΄λž˜μŠ€κ°€ ν•„μš”ν•œ 이유

Java 세상은 ν΄λž˜μŠ€μ™€ 객체둜 이루어져 μžˆλ‹€. 그만큼 ν΄λž˜μŠ€μ™€ κ°μ²΄λΌλŠ” κ°œλ…μ€ μ€‘μš”ν•˜λ‹€.
그런데 ν΄λž˜μŠ€μ™€ κ°μ²΄λŠ” λ„ˆλ¬΄ λ§Žμ€ λ‚΄μš©μ„ ν¬ν•¨ν•˜κ³  μžˆμ–΄μ„œ ν•œ λ²ˆμ— μ΄ν•΄ν•˜κΈ° 쉽지 μ•Šλ‹€.

μ‚¬λžŒμ΄ κ΄€λ¦¬ν•˜κΈ° 쒋은 방식은 κ°œλ…μ„ ν•˜λ‚˜λ‘œ λ¬ΆλŠ” 것이닀. 그리고 각각의 객체 λ³„λ‘œ 값을 κ΄€λ¦¬ν•˜λŠ” 것이닀.

 

클래슀 λ„μž…

student 클래슀

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

class ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ 학생 클래슀(Strudent)λ₯Ό μ •μ˜ν•œλ‹€. 학생 ν΄λž˜μŠ€λŠ” 내뢀에 이름(name), λ‚˜μ΄(age), 성적(grade) λ³€μˆ˜λ₯Ό 가진닀.

μ΄λ ‡κ²Œ ν΄λž˜μŠ€μ— μ •μ˜ν•œ λ³€μˆ˜λ“€μ„ 멀버 λ³€μˆ˜, λ˜λŠ” ν•„λ“œλΌ ν•œλ‹€.

  • 멀버 λ³€μˆ˜(Member Variable) : 이 λ³€μˆ˜λ“€μ€ νŠΉμ • ν΄λž˜μŠ€μ— μ†Œμ†λœ 멀버이기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ λΆ€λ₯Έλ‹€.
  • ν•„λ“œ(Field) : 데이터 ν•­λͺ©μ„ κ°€λ¦¬ν‚€λŠ” 전톡적인 μš©μ–΄μ΄λ‹€. λ°μ΄ν„°λ² μ΄μŠ€, μ—‘μ…€ λ“±μ—μ„œ 데이터 각각의 ν•­λͺ©μ„ ν•„λ“œλΌ ν•œλ‹€.
  • μžλ°”μ—μ„œ 멀버 λ³€μˆ˜, ν•„λ“œλŠ” 같은 λœ»μ΄λ‹€. ν΄λž˜μŠ€μ— μ†Œμ†λœ λ³€μˆ˜λ₯Ό λœ»ν•œλ‹€.

ν΄λž˜μŠ€λŠ” 관둀상 λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜κ³  낙타 ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•œλ‹€.
ex ) Student, User, MemberService

 

ClassStart3

package class1;

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

ν΄λž˜μŠ€μ™€ μ‚¬μš©μž μ •μ˜ νƒ€μž…

  • νƒ€μž…μ€ λ°μ΄ν„°μ˜ μ’…λ₯˜λ‚˜ ν˜•νƒœλ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
  • int라고 ν•˜λ©΄ μ •μˆ˜ νƒ€μž…, String이라고 ν•˜λ©΄ λ¬Έμžμ—΄ νƒ€μž…μ΄λ‹€.
  • 학생(Student)μ΄λΌλŠ” νƒ€μž…μ„ λ§Œλ“€λ©΄ λ˜μ§€ μ•Šμ„κΉŒ?
    • 클래슀λ₯Ό μ‚¬μš©ν•˜λ©΄ int, Stringκ³Ό 같은 νƒ€μž…μ„ 직접 λ§Œλ“€ 수 μžˆλ‹€.
  • μ‚¬μš©μžκ°€ 직접 μ •μ˜ν•˜λŠ” μ‚¬μš©μž μ •μ˜ νƒ€μž…μ„ λ§Œλ“€λ €λ©΄ 섀계도가 ν•„μš”ν•˜λ‹€. 이 섀계도가 λ°”λ‘œ ν΄λž˜μŠ€μ΄λ‹€.
  • 섀계도인 클래슀λ₯Ό μ‚¬μš©ν•΄μ„œ μ‹€μ œ λ©”λͺ¨λ¦¬μ— λ§Œλ“€μ–΄μ§„ 싀체λ₯Ό 객체 λ˜λŠ” μΈμŠ€ν„΄μŠ€λΌ ν•œλ‹€.
  • 클래슀λ₯Ό ν†΅ν•΄μ„œ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μ’…λ₯˜μ˜ 데이터 νƒ€μž…μ„ 마음껏 μ •μ˜ν•  수 μžˆλ‹€.

 

βœ”οΈ μš©μ–΄ : 클래슀, 객체, μΈμŠ€ν„΄μŠ€

ν΄λž˜μŠ€λŠ” 섀계도이고, 이 섀계도λ₯Ό 기반으둜 μ‹€μ œ λ©”λͺ¨λ¦¬μ— λ§Œλ“€μ–΄μ§„ 싀체λ₯Ό 객체 λ˜λŠ” μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.
λ‘˜ λ‹€ 같은 의미둜 μ‚¬μš©λœλ‹€.

 

μ½”λ“œ 뢄석

1. λ³€μˆ˜ μ„ μ–Έ

  • Student student1
    • Student νƒ€μž…μ„ 받을 수 μžˆλŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•œλ‹€.
    • intλŠ” μ •μˆ˜λ₯Ό, String은 문자λ₯Ό 담을 수 μžˆλ“―μ΄ StudentλŠ” Student νƒ€μž…μ˜ 객체(μΈμŠ€ν„΄μŠ€)λ₯Ό 받을 수 μžˆλ‹€.

2. 객체 생성

  • 객체λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ¨Όμ € 섀계도인 클래슀λ₯Ό 기반으둜 객체(μΈμŠ€ν„΄μŠ€)λ₯Ό 생성해야 ν•œλ‹€.
  • new Student( ) : newλŠ” μƒˆλ‘œ μƒμ„±ν•œλ‹€λŠ” λœ»μ΄λ‹€. new Student( )λŠ” Student 클래슀 정보λ₯Ό 기반으둜 μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•˜λΌλŠ” λœ»μ΄λ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λ©”λͺ¨λ¦¬μ— μ‹€μ œ Student 객체(μΈμŠ€ν„΄μŠ€)λ₯Ό μƒμ„±ν•œλ‹€.
  • 객체λ₯Ό 생성할 λ•ŒλŠ” new 클래슀λͺ…( )을 μ‚¬μš©ν•˜λ©΄ λœλ‹€. λ§ˆμ§€λ§‰μ— ( )도 μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.
  • Student ν΄λž˜μŠ€λŠ” String name, int age, int grade 멀버 λ³€μˆ˜λ₯Ό 가지고 μžˆλ‹€. 이 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ”λ° ν•„μš”ν•œ λ©”λͺ¨λ¦¬ 곡간도 ν•¨κ»˜ ν™•λ³΄ν•œλ‹€.

3. μ°Έμ‘°κ°’ 보관

  • 객체λ₯Ό μƒμ„±ν•˜λ©΄ JavaλŠ” λ©”λͺ¨λ¦¬ μ–΄λ”˜κ°€μ— 이 객체에 μ ‘κ·Όν•  수 μžˆλŠ” μ°Έμ‘°κ°’(μ£Όμ†Œ)(x001)을 λ°˜ν™˜ν•œλ‹€.
    • μ—¬κΈ°μ„œ x001이라고 ν‘œν˜„ν•œ 것이 참쑰값이닀. (μ‹€μ œλ‘œ x001처럼 ν‘œν˜„λ˜λŠ” 것은 μ•„λ‹ˆκ³  이해λ₯Ό 돕기 μœ„ν•œ μ˜ˆμ‹œ)
  • new ν‚€μ›Œλ“œλ₯Ό 톡해 객체가 μƒμ„±λ˜κ³  λ‚˜λ©΄ 참쑰값을 λ°˜ν™˜ν•œλ‹€. μ•žμ„œ μ„ μ–Έν•œ λ³€μˆ˜μΈ Student student1에 μƒμ„±λœ 객체의 μ°Έμ‘°κ°’(x001)을 λ³΄κ΄€ν•œλ‹€.
  • Student student1 λ³€μˆ˜λŠ” 이제 λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ” μ‹€μ œ Student 객체(μΈμŠ€ν„΄μŠ€)의 참쑰값을 가지고 μžˆλ‹€.
    • student1 λ³€μˆ˜λŠ” 방금 λ§Œλ“  객체에 μ ‘κ·Όν•  수 μžˆλŠ” 참쑰값을 가지고 μžˆλ‹€. λ”°λΌμ„œ 이 λ³€μˆ˜λ₯Ό ν†΅ν•΄μ„œ 객체λ₯Ό μ ‘κ·Ό(μ°Έμ‘°)ν•  수 μžˆλ‹€. μ‰½κ²Œ μ΄μ•ΌκΈ°ν•΄μ„œ student1 λ³€μˆ˜λ₯Ό 톡해 λ©”λͺ¨λ¦¬μ— μžˆλŠ” μ‹€μ œ 객체λ₯Ό μ ‘κ·Όν•˜κ³  μ‚¬μš©ν•  수 μžˆλ‹€.

 

βœ”οΈ 참쑰값을 λ³€μˆ˜μ— 보관해야 ν•˜λŠ” 이유

객체λ₯Ό μƒμ„±ν•˜λŠ” new Student( ) μ½”λ“œ μžμ²΄μ—λŠ” μ•„λ¬΄λŸ° 이름이 μ—†λ‹€. 이 μ½”λ“œλŠ” λ‹¨μˆœνžˆ Student 클래슀λ₯Ό 기반으둜 λ©”λͺ¨λ¦¬μ— μ‹€μ œ 객체λ₯Ό λ§Œλ“œλŠ” 것이닀. λ”°λΌμ„œ μƒμ„±ν•œ 객체에 μ ‘κ·Όν•  수 μžˆλŠ” 방법이 ν•„μš”ν•˜λ‹€. 이런 이유둜 객체λ₯Ό 생성할 λ•Œ λ°˜ν™˜λ˜λŠ” 참쑰값을 μ–΄λ”˜κ°€μ— 보관해두어야 ν•œλ‹€. μ•žμ„œ Student student1 λ³€μˆ˜μ— μ°Έμ‘°κ°’(x001)을 μ €μž₯ν•΄λ‘μ—ˆμœΌλ―€λ‘œ μ €μž₯ν•œ μ°Έμ‘°κ°’(x001)을 톡해 μ‹€μ œ λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ” 객체에 μ ‘κ·Όν•  수 μžˆλ‹€.

 

Student student1 = new Student();  // 1. Student 객체 생성
Student student1 = x001;  // 2. new Student()의 결과둜 x001 μ°Έμ‘°κ°’ λ°˜ν™˜
student1 = x001;  // 3. μ΅œμ’… κ²°κ³Ό

 

객체 μ‚¬μš©

클래슀λ₯Ό 톡해 μƒμ„±ν•œ 객체λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ¨Όμ € λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ” 객체에 μ ‘κ·Όν•΄μ•Ό ν•œλ‹€. 객체에 μ ‘κ·Όν•˜λ €λ©΄ .(점, dot)을 μ‚¬μš©ν•˜λ©΄ λœλ‹€.

// 객체 κ°’ λŒ€μž…
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;

// 객체 κ°’ μ‚¬μš©
System.out.println("이름: " + student1.name + " λ‚˜μ΄: " + student1.age + " 성적: " + student1.grade);

객체에 κ°’ λŒ€μž…

객체가 가지고 μžˆλŠ” 멀버 λ³€μˆ˜(name, age, grade)에 값을 λŒ€μž…ν•˜λ €λ©΄ λ¨Όμ € 객체에 μ ‘κ·Όν•΄μ•Ό ν•œλ‹€.
객체에 μ ‘κ·Όν•˜λ €λ©΄ .(점, dot) ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 이 ν‚€μ›Œλ“œλŠ” λ³€μˆ˜(student1)에 λ“€μ–΄μžˆλŠ” μ°Έμ‘°κ°’(x001)을 μ½μ–΄μ„œ λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ” 객체에 μ ‘κ·Όν•œλ‹€.

μˆœμ„œλ₯Ό κ°„λ‹¨ν•˜κ²Œ 풀어보면 λ‹€μŒκ³Ό κ°™λ‹€.

student1.name = "학생1";  // 1. student1 객체의 name 멀버 λ³€μˆ˜μ— κ°’ λŒ€μž…
x001.name = "학생1";  // 2. λ³€μˆ˜μ— μžˆλŠ” 참쑰값을 톡해 μ‹€μ œ 객체에 μ ‘κ·Ό, ν•΄λ‹Ή 객체의 name 멀버 λ³€μˆ˜μ— κ°’ λŒ€μž…


student1.(dot)이라고 ν•˜λ©΄ student1 λ³€μˆ˜κ°€ 가지고 μžˆλŠ” 참쑰값을 톡해 μ‹€μ œ 객체에 μ ‘κ·Όν•œλ‹€.
student1은 x001μ΄λΌλŠ” 참쑰값을 가지고 μžˆμœΌλ―€λ‘œ x001 μœ„μΉ˜μ— μžˆλŠ” Student 객체에 μ ‘κ·Όν•œλ‹€.

객체 κ°’ 읽기

객체의 값을 μ½λŠ” 것도 μ•žμ„œ μ„€λͺ…ν•œ λ‚΄μš©κ³Ό κ°™λ‹€. .(점, dot) ν‚€μ›Œλ“œλ₯Ό 톡해 참쑰값을 μ‚¬μš©ν•΄μ„œ μ ‘κ·Όν•œ λ‹€μŒμ— μ›ν•˜λŠ” μž‘μ—…μ„ ν•˜λ©΄ λœλ‹€.

// 1. 객체 κ°’ 읽기
System.out.println("이름: " + student1.name);
// 2. λ³€μˆ˜μ— μžˆλŠ” 참쑰값을 톡해 μ‹€μ œ 객체에 μ ‘κ·Όν•˜κ³ , name 멀버 λ³€μˆ˜μ— μ ‘κ·Όν•œλ‹€.
System.out.println("이름: " + x001.name);
// 3. 객체의 멀버 λ³€μˆ˜μ˜ 값을 μ½μ–΄μ˜΄
System.out.println("이름: " + "학생1");

 

클래슀, 객체, μΈμŠ€ν„΄μŠ€ 정리

클래슀 - Class

더보기

ν΄λž˜μŠ€λŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 'ν‹€' λ˜λŠ” '섀계도'이닀. ν΄λž˜μŠ€λŠ” 객체가 κ°€μ Έμ•Ό ν•  속성(λ³€μˆ˜)κ³Ό κΈ°λŠ₯(λ©”μ„œλ“œ)λ₯Ό μ •μ˜ν•œλ‹€. 예λ₯Ό λ“€μ–΄ ν•™μƒμ΄λΌλŠ” ν΄λž˜μŠ€λŠ” μ†μ„±μœΌλ‘œ name, age, gradeλ₯Ό 가진닀.

  • ν‹€ : λΆ•μ–΄λΉ΅ 틀을 μƒκ°ν•΄λ³΄μž. λΆ•μ–΄λΉ΅ 틀은 뢕어빡이 μ•„λ‹ˆλ‹€! μ΄λ ‡κ²Œ 생긴 뢕어빡이 λ‚˜μ™”μœΌλ©΄ μ’‹κ² λ‹€κ³  λ§Œλ“œλŠ” 틀일 뿐이닀. μ‹€μ œ 먹을 수 μžˆλŠ” 것이 μ•„λ‹ˆλ‹€. μ‹€μ œ 먹을 수 μžˆλŠ” νŒ₯ 뢕어빡을 객체 λ˜λŠ” μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.
  • 섀계도 : μžλ™μ°¨ 섀계도λ₯Ό μƒκ°ν•΄λ³΄μž. μžλ™μ°¨ μ„€κ³„λ„λŠ” μžλ™μ°¨κ°€ μ•„λ‹ˆλ‹€! μ„€κ³„λ„λŠ” μ‹€μ œ μ‘΄μž¬ν•˜λŠ” 것이 μ•„λ‹ˆλΌ κ°œλ…μœΌλ‘œλ§Œ μžˆλŠ” 것이닀. 섀계도λ₯Ό 톡해 μƒμ‚°ν•œ μ‹€μ œ μ‘΄μž¬ν•˜λŠ” 흰색 ν…ŒμŠ¬λΌ λͺ¨λΈ Y μžλ™μ°¨λ₯Ό 객체 λ˜λŠ” μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.

객체 - Object

더보기

κ°μ²΄λŠ” ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•œ 속성과 κΈ°λŠ₯을 가진 싀체이닀. κ°μ²΄λŠ” μ„œλ‘œ 독립적인 μƒνƒœλ₯Ό 가진닀.

예λ₯Ό λ“€μ–΄ μœ„ μ½”λ“œμ—μ„œ student1은 학생1의 속성을 κ°€μ§€λŠ” 객체이고, student2λŠ” 학생2의 속성을 κ°€μ§€λŠ” 객체이닀.
student1κ³Ό student2λŠ” 같은 ν΄λž˜μŠ€μ—μ„œ λ§Œλ“€μ–΄μ‘Œμ§€λ§Œ, μ„œλ‘œ λ‹€λ₯Έ 객체이닀.

μΈμŠ€ν„΄μŠ€ - Instance

더보기

μΈμŠ€ν„΄μŠ€λŠ” νŠΉμ • ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ„±λœ 객체λ₯Ό μ˜λ―Έν•œλ‹€. κ·Έλž˜μ„œ 객체와 μΈμŠ€ν„΄μŠ€λΌλŠ” μš©μ–΄λŠ” 자주 ν˜Όμš©λœλ‹€. μΈμŠ€ν„΄μŠ€λŠ” 주둜 객체가 μ–΄λ–€ ν΄λž˜μŠ€μ— 속해 μžˆλŠ”μ§€ κ°•μ‘°ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
예λ₯Ό λ“€μ–΄μ„œ student1 κ°μ²΄λŠ” Student 클래슀의 μΈμŠ€ν„΄μŠ€μ΄λ‹€. 라고 ν‘œν˜„ν•œλ‹€.

객체 vs μΈμŠ€ν„΄μŠ€

더보기

λ‘˜ λ‹€ ν΄λž˜μŠ€μ—μ„œ λ‚˜μ˜¨ μ‹€μ²΄λΌλŠ” μ˜λ―Έμ—μ„œ λΉ„μŠ·ν•˜κ²Œ μ‚¬μš©λ˜μ§€λ§Œ, μš©μ–΄μƒ μΈμŠ€ν„΄μŠ€λŠ” 객체보닀 μ’€ 더 관계에 μ΄ˆμ μ„ 맞좘 단어이닀. 보톡 student1은 Student의 객체이닀. 라고 λ§ν•˜λŠ” λŒ€μ‹  student1은 Student의 μΈμŠ€ν„΄μŠ€μ΄λ‹€. 라고 νŠΉμ • ν΄λž˜μŠ€μ™€μ˜ 관계λ₯Ό λͺ…ν™•νžˆ ν•  λ•Œ μΈμŠ€ν„΄μŠ€λΌλŠ” μš©μ–΄λ₯Ό 주둜 μ‚¬μš©ν•œλ‹€.

λͺ¨λ“  μΈμŠ€ν„΄μŠ€λŠ” κ°μ²΄μ΄μ§€λ§Œ, μš°λ¦¬κ°€ μΈμŠ€ν„΄μŠ€λΌκ³  λΆ€λ₯΄λŠ” μˆœκ°„μ€ νŠΉμ • ν΄λž˜μŠ€λ‘œλΆ€ν„° κ·Έ 객체가 μƒμ„±λ˜μ—ˆμŒμ„ κ°•μ‘°ν•˜κ³  싢을 λ•Œμ΄λ‹€. 예λ₯Ό λ“€μ–΄ student1은 κ°μ²΄μ΄μ§€λ§Œ, 이 객체가 Student ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ„±λœλ‹€λŠ” 점을 λͺ…ν™•νžˆ ν•˜κΈ° μœ„ν•΄ student1을 Student의 μΈμŠ€ν„΄μŠ€λΌκ³  λΆ€λ₯Έλ‹€.

ν•˜μ§€λ§Œ λ‘˜ λ‹€ ν΄λž˜μŠ€μ—μ„œ λ‚˜μ˜¨ μ‹€μ²΄λΌλŠ” 핡심 μ˜λ―ΈλŠ” κ°™κΈ° λ•Œλ¬Έμ— 보톡 λ‘˜μ„ κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•œλ‹€.

 

λ°°μ—΄ λ„μž… - μ‹œμž‘

배열을 μ‚¬μš©ν•˜λ©΄ νŠΉμ • νƒ€μž…μ„ μ—°μ†ν•œ 데이터 ꡬ쑰둜 λ¬Άμ–΄μ„œ νŽΈλ¦¬ν•˜κ²Œ 관리할 수 μžˆλ‹€.
Student 클래슀λ₯Ό μ‚¬μš©ν•œ λ³€μˆ˜λ“€λ„ Student νƒ€μž…μ΄κΈ° λ•Œλ¬Έμ— 학생도 배열을 μ‚¬μš©ν•΄μ„œ ν•˜λ‚˜μ˜ 데이터 ꡬ쑰둜 λ¬Άμ–΄μ„œ 관리할 수 μžˆλ‹€.

ClassStart4

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("이름: " + students[0].name + " λ‚˜μ΄: " + students[0].age + " 성적: " + students[0].grade);
        System.out.println("이름: " + students[1].name + " λ‚˜μ΄: " + students[1].age + " 성적: " + students[1].grade);
    }
}

μžλ°”μ—μ„œ λŒ€μž…μ€ 항상 λ³€μˆ˜μ— λ“€μ–΄μžˆλŠ” 값을 λ³΅μ‚¬ν•œλ‹€.
student1, student2μ—λŠ” 참쑰값이 λ³΄κ΄€λ˜μ–΄ μžˆλ‹€. λ”°λΌμ„œ 이 참쑰값이 배열에 μ €μž₯λœλ‹€. λ˜λŠ” student1, student2에 λ³΄κ΄€λœ 참쑰값을 μ½μ–΄μ„œ 배열에 λŒ€μž…ν•œλ‹€κ³  ν‘œν˜„ν•œλ‹€.

 

βœ”οΈ 주의

λ³€μˆ˜μ—λŠ” μΈμŠ€ν„΄μŠ€ μžμ²΄κ°€ λ“€μ–΄μžˆλŠ” 것이 μ•„λ‹ˆλ‹€! μΈμŠ€ν„΄μŠ€μ˜ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 참쑰값이 λ“€μ–΄μžˆμ„ 뿐이닀!
λ”°λΌμ„œ λŒ€μž…(=)μ‹œμ— μΈμŠ€ν„΄μŠ€κ°€ λ³΅μ‚¬λ˜λŠ” 것이 μ•„λ‹ˆλΌ μ°Έμ‘°κ°’λ§Œ λ³΅μ‚¬λœλ‹€.

 

배열에 λ“€μ–΄μžˆλŠ” 객체 μ‚¬μš©

배열에 λ“€μ–΄ μžˆλŠ” 객체λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ¨Όμ € 배열에 μ ‘κ·Όν•˜κ³ , κ·Έλ‹€μŒμ— 객체에 μ ‘κ·Όν•˜λ©΄ λœλ‹€.

 

λ°°μ—΄ λ„μž… - λ¦¬νŒ©ν† λ§

배열을 μ‚¬μš©ν•œ 덕뢄에 좜λ ₯μ—μ„œ λ‹€μŒκ³Ό 같이 for문을 λ„μž…ν•  수 있게 λ˜μ—ˆλ‹€.

ClassStart5

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 = {student1, student2};


        for (Student s : students) {
            System.out.println("이름: " + s.name + " λ‚˜μ΄: " + s.age + " 성적: " + s.grade);
        }
    }
}