
์ฐจ์ด๋ ์ฌ์ฉํ๋ ๊ฐ์ ์ง์ ๋ฃ์ ์ ์๋์ง์
์ฌ์ฉํ๋ ๊ฐ์ด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ์ ๋ฃ๋๊ฐ์ด๋ค.
๋ณ์์ ๋ฐ์ดํฐ ํ์ : ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ
๋ณ์์ ๋ฐ์ดํฐ ํ์ ์ ํฌ๊ฒ ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ผ๋ก ๋๋ ์ ์๋ค.
๊ธฐ๋ณธํ์ ์ฌ์ฉํ๋ ๊ฐ์ ๋ณ์์ ์ง์ ์ ์ฅํ๋ ํ์ ์ด๊ณ , ์ฐธ์กฐํ์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ํ์ ์ด๋ค.
๊ธฐ๋ณธํ (Primitive Type)
๊ธฐ๋ณธํ์ int, long, double, boolean์ฒ๋ผ ๋ณ์๊ฐ ๊ฐ์ ์ง์ ์ ์ฅํ๋ ๋ฐ์ดํฐ ํ์ ์ด๋ค.
์๋ฅผ ๋ค์ด, ์ซ์ 10์ด๋ 20 ๊ฐ์ ๊ฐ์ ๋ณ์์ ๋ฐ๋ก ๋ด์ ์ ์๋ค.
๊ธฐ๋ณธํ ๋ณ์๋ ๊ฐ์ ์ ์ฅํ๊ณ ์ฆ์ ์ฌ์ฉํ ์ ์๋ค๋ ํน์ง์ด ์๋ค.
์ฐธ์กฐํ (Reference Type)
์ฐธ์กฐํ์ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ๋ณ์์ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์(์ฐธ์กฐ๊ฐ)๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ ํ์ ์ด๋ค.
์๋ฅผ ๋ค์ด, Student student1 ๊ฐ์ ๊ฐ์ฒด ๋ณ์๋ int[] students ๊ฐ์ ๋ฐฐ์ด ๋ณ์๊ฐ ์ฐธ์กฐํ์ ํด๋นํ๋ค.
๊ฐ์ฒด ๋๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฐธ์กฐํ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
๊ธฐ๋ณธํ vs ์ฐธ์กฐํ: ํต์ฌ ์ฐจ์ด์
1. ์ ์ฅ ๋ฐฉ์
• ๊ธฐ๋ณธํ: ๋ณ์์ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅํ๋ค.
์) int age = 25;
• ์ฐธ์กฐํ: ๋ณ์์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
์) Student student1 = new Student();
2. ๋ฐ์ดํฐ ํ์ฉ
• ๊ธฐ๋ณธํ์ ๊ฐ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
์) int x = 10;์์ x๋ 10์ ์ง์ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ค.
• ์ฐธ์กฐํ์ ์ ์ฅ๋ ์ฃผ์๋ฅผ ํตํด ์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํด์ผ ํ๋ค.
์) student1์ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ฅผ ํตํด student1.getName()์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋ค.
๊ธฐ๋ณธํ์ ๋ณ์์ ๊ฐ์ ์ง์ ์ ์ฅํ๋ ๋ฐ๋ฉด, ์ฐธ์กฐํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ค.
์ด๋ฌํ ์ฐจ์ด๋ ๋ณ์์ ์ฌ์ฉ ๋ฐฉ์๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์์ ์ค์ํ ์ญํ ์ ํ๋ค.
๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํด ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ํน์ง์ ์ ์ดํดํ๊ณ ํ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๊ธฐ๋ณธํ vs ์ฐธ์กฐํ - ๊ณ์ฐ
๊ธฐ๋ณธํ
๊ธฐ๋ณธํ์ ๋ณ์์ ๋ด๊ฒจ ์๋ ๊ฐ์ ๊ทธ๋๋ก ๊ณ์ฐ์ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ๋ง์ , ๋บ์ , ๊ณฑ์ , ๋๋์ ๊ฐ์ ์ฐ์ฐ์ด ๋ฐ๋ก ๊ฐ๋ฅํ๋ค.
์์)
int a = 10, b = 20;
int sum = a + b;
์ ์ฝ๋์์ a์ b๋ ์ค์ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ +์ ๊ฐ์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
์ฐธ์กฐํ
์ฐธ์กฐํ์ ๋ณ์์ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(์ฐธ์กฐ๊ฐ)๊ฐ ๋ด๊ฒจ ์๋ค.
์ฐธ์กฐ๊ฐ์ ๊ณ์ฐ์ ์ง์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ฐ์ฐ์ ์๋ํ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์์)
Student s1 = new Student();
Student s2 = new Student();
s1 + s2; // ์ค๋ฅ ๋ฐ์
๋ค๋ง, ์ฐธ์กฐํ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์์ฑ(๋ฉค๋ฒ ๋ณ์)์ ์ ๊ทผํ์ฌ ์ฐ์ฐํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค.
์์)
Student s1 = new Student();
s1.grade = 100;
Student s2 = new Student();
s2.grade = 90;
int sum = s1.grade + s2.grade; // ์ฐ์ฐ ๊ฐ๋ฅ
์ ์ฝ๋์์ ๊ฐ์ฒด์ grade๋ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ์ด๋ฏ๋ก ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
• ๊ธฐ๋ณธํ: ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ์ง์ ๊ณ์ฐ์ ์ฌ์ฉํ ์ ์๋ค.
• ์ฐธ์กฐํ: ๋ณ์์ ์ ์ฅ๋ ์ฐธ์กฐ๊ฐ(์ฃผ์) ์์ฒด๋ ๊ณ์ฐ์ ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง ์ฐธ์กฐ๋ ๊ฐ์ฒด์ ๊ธฐ๋ณธํ ์์ฑ์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ์ฝ๊ฒ ๊ตฌ๋ถํ๋ ํ
๊ธฐ๋ณธํ์ ์ ์ธํ ๋๋จธ์ง๋ ๋ชจ๋ ์ฐธ์กฐํ์ด๋ค.
๊ธฐ๋ณธํ์ ํน์ง
• ์๋ฌธ์๋ก ์์ํ๋ค.
์) int, long, double, boolean
• ๊ธฐ๋ณธํ์ ์๋ฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ฐ์ดํฐ ํ์ ์ด๋ฉฐ, ์๋ก์ด ๊ธฐ๋ณธํ์ ์ ์ํ ์ ์๋ค.
๊ฐ๋ฐ์๊ฐ ์ ์ํ ์ ์๋ ๊ฒ์ ์ฐธ์กฐํ ํด๋์ค๋ฟ์ด๋ค.
์ฐธ์กฐํ์ ํน์ง
• ํด๋์ค๋ ๋๋ฌธ์๋ก ์์ํ๋ค.
์) Student
• ํด๋์ค๋ ๋ชจ๋ ์ฐธ์กฐํ์ด๋ค.
์ฐธ๊ณ - String
์๋ฐ์์ String์ ํน๋ณํ ํด๋์ค๋ค.
• String์ ์ฐธ์กฐํ์ด์ง๋ง, ๊ธฐ๋ณธํ์ฒ๋ผ ๋ฌธ์ ๊ฐ์ ๋ฐ๋ก ๋์ ํ ์ ์๋ค.
• ๋ฌธ์๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ๋งค์ฐ ๋น๋ฒํ๊ธฐ ๋๋ฌธ์, ์๋ฐ๋ String์ ๋ํด ํน๋ณํ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
• String์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ดํ์ ์ค๋ช ํ๋ค.
๊ธฐ๋ณธํ vs ์ฐธ์กฐํ - ๋ณ์ ๋์
๋์ ์์น: ์๋ฐ๋ ํญ์ ๋ณ์์ ๊ฐ์ ๋ณต์ฌํด์ ๋์ ํ๋ค.
์๋ฐ์์ ๋ณ์์ ๊ฐ์ ๋์ ํ๋ค๋ ๊ฒ์, ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ๋ณต์ฌํด์ ์๋ก์ด ๋ณ์์ ๋ฃ๋ ๊ฒ์ด๋ค.
• ๊ธฐ๋ณธํ: ์ค์ ๊ฐ์ด ๋ณต์ฌ๋์ด ์๋ก์ด ๋ณ์์ ๋์ ๋๋ค.
• ์ฐธ์กฐํ: ๊ฐ์ฒด์ ์์น๋ฅผ ๋ํ๋ด๋ ์ฐธ์กฐ๊ฐ(์ฃผ์)์ด ๋ณต์ฌ๋์ด ์๋ก์ด ๋ณ์์ ๋์ ๋๋ค.
๊ธฐ๋ณธํ ๋์
int a = 10;
int b = a;
• b์๋ a์ ๊ฐ 10์ด ๋ณต์ฌ๋์ด ๋ค์ด๊ฐ๋ค.
์ดํ a์ ๊ฐ์ ๋ณ๊ฒฝํด๋ b์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
• ์์ ์คํ ๊ฒฐ๊ณผ:
a = 10, b = 10
a = 20์ผ๋ก ๋ณ๊ฒฝํด๋ b = 10 ์ ์ง.
b = 30์ผ๋ก ๋ณ๊ฒฝํด๋ a = 20 ์ ์ง.

์ ๊ทธ๋ฆผ์์ int b = a๋ ๊ฐ 10์ ๋ณต์ฌํ์ฌ b์ ์ ๋ฌํ๋ค.
๋ฐ๋ผ์, a์ b๋ ์๋ก ๋ ๋ฆฝ์ ์ธ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ํ์ชฝ ๊ฐ์ ๋ณ๊ฒฝํด๋ ๋ค๋ฅธ ์ชฝ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
์ฐธ์กฐํ ๋์
Student s1 = new Student();
Student s2 = s1;
• s2์๋ s1์ ์ฐธ์กฐ๊ฐ(๊ฐ์ฒด์ ์ฃผ์)์ด ๋ณต์ฌ๋๋ค.
• s1๊ณผ s2๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก, ํ์ชฝ์์ ๊ฐ์ฒด์ ์์ฑ์ ๋ณ๊ฒฝํ๋ฉด ๋ค๋ฅธ ์ชฝ์์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋๋ค.
1. ๊ธฐ๋ณธํ: ๊ฐ ์์ฒด๋ฅผ ๋ณต์ฌํ์ฌ ๋์ ํ๋ฏ๋ก, ๊ฐ ๋ณ์๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ ์ ์งํ๋ค.
2. ์ฐธ์กฐํ: ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ(์ฃผ์)์ ๋ณต์ฌํ์ฌ ๋์ ํ๋ฏ๋ก, ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ค.

์ฐธ์กฐํ ๋ณ์์ ๊ฒฝ์ฐ, ๊ฐ์ผ๋ก ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ(์ฃผ์)์ด ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก, ์ด๋ฅผ ๋ณต์ฌํ๊ฒ ๋๋ค.
๋ณ์์ ์ ์ฅ๋ ์ฐธ์กฐ๊ฐ๋ง ๋ณต์ฌ๋๋ฉฐ, ์ธ์คํด์ค ์์ฒด๋ ๋ณต์ฌ๋์ง ์๋๋ค.


dataA๊ฐ ์ฐธ์กฐํ๋ ์ธ์คํด์ค์ value ๊ฐ์ 10์์ 20์ผ๋ก ๋ณ๊ฒฝํ๋ค.
dataB ์ญ์ ๋์ผํ ์ธ์คํด์ค ์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์, dataB.value๋ 20์ผ๋ก ์ถ๋ ฅ๋๋ค.

ํต์ฌ ํฌ์ธํธ
• ๋ณ์์ ๋์ ์ ๋ณ์์ ๋ค์ด์๋ ๊ฐ์ ๋ณต์ฌํด์ ์ด๋ฃจ์ด์ง๋ค.
• ์ฐธ์กฐํ ๋ณ์๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ(์ฃผ์)์ ๋ณต์ฌํ๋ฉฐ, ์ธ์คํด์ค ์์ฒด๋ฅผ ๋ณต์ฌํ์ง ์๋๋ค.
• ๋ฐ๋ผ์, ๋ ๋ณ์๊ฐ ๋์ผํ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ง๊ฒ ๋๊ณ , ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
• ํ์ชฝ์์ ์ฐธ์กฐํ๋ ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด, ๋ค๋ฅธ ์ชฝ์์๋ ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
๋ณ์ dataA์ dataB๋ ์๋ก ๋ ๋ฆฝ๋ ๋ณ์๊ฐ ์๋๋ผ, ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ์ด๋ฆ์ผ ๋ฟ์ด๋ค.
์ฐธ์กฐํ ๋ณ์์ ์ด๋ฌํ ํน์ฑ์ ๊ฐ์ฒด์ ๊ด๋ จ๋ ์์ ์์ ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ด๋ฏ๋ก,
๊ฐ์ฒด ๊ฐ ๋์์ ์ค๊ณํ ๋ ์ด๋ฅผ ๋ช ํํ ์ดํดํด์ผ ํ๋ค.

๊ธฐ๋ณธํ ๊ฐ์ ๋ฉ์๋ ํธ์ถ ์ ๋์
๋ฉ์๋ ํธ์ถ ์, ๊ธฐ๋ณธํ ๋ณ์์ ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌํ๋ค.
์ด๋ก ์ธํด ๋ฉ์๋ ๋ด๋ถ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋๋ผ๋, ์๋ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
๊ธฐ๋ณธํ์ด์์๋๋ ๊ฐ์ด ๋ฐ๋์ง ์์์ง๋ง ์ฐธ์กฐํ์ผ๋๋ ๊ฐ์ด ๋ฐ๋๋ค.
1. ๋ฉ์๋ ํธ์ถ ์
• ๋ณ์ a์ ๊ฐ 10์ด ๋ณต์ฌ๋์ด ๋ฉ์๋ ๋งค๊ฐ๋ณ์ x๋ก ์ ๋ฌ๋๋ค.
• ์ด๋, x๋ a์ ๋ ๋ฆฝ๋ ๋ณ๋์ ๋ณ์๋ก ๋์ํ๋ค.
2. ๋ฉ์๋ ๋ด๋ถ์์ ๊ฐ ๋ณ๊ฒฝ
• ๋ฉ์๋ ๋ด๋ถ์์ x = 20์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋๋ผ๋, ์ด๋ x์ ๊ฐ๋ง ๋ณ๊ฒฝ๋๋ ๊ฒ์ด๋ค.
• ์๋ ๋ณ์ a๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
3. ๋ฉ์๋ ์ข ๋ฃ
• ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋ฉด, x๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๊ณ ์๋ฉธ๋๋ค.
• ๋ณ์ a์ ๊ฐ์ ๊ทธ๋๋ก 10์ผ๋ก ์ ์ง๋๋ค.
๊ธฐ๋ณธํ ๊ฐ์ ๋ฉ์๋ ํธ์ถ ์ ๋ณต์ฌ๋๊ธฐ ๋๋ฌธ์, ์๋ณธ ๊ฐ๊ณผ ๋งค๊ฐ๋ณ์ ๊ฐ์ ์๋ก ๋ ๋ฆฝ์ ์ด๋ค.

์ฐธ์กฐํ ๋ณ์์ ๋ฉ์๋ ํธ์ถ ๋์
์ฐธ์กฐํ ๋ณ์๋ ์ฐธ์กฐ๊ฐ(๊ฐ์ฒด์ ์ฃผ์)๋ฅผ ๋ณต์ฌํ์ฌ ๋ฉ์๋์ ์ ๋ฌํ๋ค. ๋ฉ์๋ ๋ด๋ถ์์ ๊ฐ์ฒด์ ์์ฑ์ ๋ณ๊ฒฝํ๋ฉด, ์๋ ๋ณ์์ ์ํฅ์ ๋ฏธ์น๋ค.
์ด๋ ๋ฉ์๋ ํธ์ถ ํ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค๋ ์ ์์ ๊ธฐ๋ณธํ ๋ณ์์ ์ฐจ์ด๊ฐ ์๋ค.
1. ๋ฉ์๋ ํธ์ถ ์
• ๋ณ์ dataA์ ์ฐธ์กฐ๊ฐ x001์ด ๋ฉ์๋์ ๋งค๊ฐ๋ณ์ dataX๋ก ๋ณต์ฌ๋๋ค.
• ๋ฐ๋ผ์, dataA์ dataX๋ ๋์ผํ ๊ฐ์ฒด x001์ ๊ฐ๋ฆฌํจ๋ค.
2. ๋ฉ์๋ ๋ด๋ถ ๋์
• ๋ฉ์๋์์ dataX.value = 20์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด, x001 ๊ฐ์ฒด์ value ๊ฐ์ด 20์ผ๋ก ์ ๋ฐ์ดํธ๋๋ค.
• dataA์ dataX๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์์ผ๋ฏ๋ก, ๋ณ๊ฒฝ๋ ๊ฐ์ด ๋ ๋ณ์์ ๋ชจ๋ ๋ฐ์๋๋ค.
3. ๋ฉ์๋ ์ข ๋ฃ
• ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋๋ผ๋, dataA๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด x001์ ๋ณ๊ฒฝ๋ ์ํ๋ฅผ ์ ์งํ๋ค.
๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ๋ฉ์๋ ํธ์ถ ์ฐจ์ด
• ๊ธฐ๋ณธํ: ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌํ๋ฏ๋ก, ๋ฉ์๋ ๋ด์์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ์๋ณธ ๋ณ์์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
• ์ฐธ์กฐํ: ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌํ๋ฏ๋ก, ๋ฉ์๋ ๋ด์์ ๊ฐ์ฒด์ ์์ฑ์ ๋ณ๊ฒฝํ๋ฉด ์๋ณธ ๋ณ์์๋ ์ํฅ์ ๋ฏธ์น๋ค.
์ฐธ์กฐํ ๋ณ์์ ๋ฉ์๋ ํธ์ถ
์ฐธ์กฐํ ๋ณ์๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ(์ฃผ์)์ ๋ฉ์๋์ ์ ๋ฌํ๋ค. ์ด๋ฅผ ํตํด ๋ฉ์๋ ๋ด๋ถ์์ ๊ฐ์ฒด์ ํ๋๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ด๊ธฐํํ ์ ์๋ค.

๋ฉ์๋ ๋์ ์๋ฆฌ
1. ๊ฐ์ฒด ์์ฑ๊ณผ ์ด๊ธฐ
createStudent ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด, ์๋ก์ด Student ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
๋ฉ์๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ๊ฐ์ ์ฌ์ฉํด Student ๊ฐ์ฒด์ name, age, grade ํ๋๊ฐ ์ด๊ธฐํ๋๋ค.
2. ์ฐธ์กฐ๊ฐ ๋ฐํ
์ด๊ธฐํ๋ Student ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ด ๋ฐํ๋์ด, student1๊ณผ student2์ ์ ์ฅ๋๋ค.
student1๊ณผ student2๋ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ Student ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค.
3. ๊ฐ์ฒด ์ ๋ณด ์ถ๋ ฅ
printStudent ๋ฉ์๋๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ์ฐธ์กฐ๊ฐ์ ์ฌ์ฉํด ํด๋น ๊ฐ์ฒด์ ํ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
ํต์ฌ ํฌ์ธํธ
• ์ฐธ์กฐํ ๋ณ์์ ๋งค๊ฐ๋ณ์ ์ ๋ฌ:
๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๋ฉ์๋์ ์ ๋ฌํ๋ฏ๋ก, ๋ฉ์๋ ๋ด๋ถ์์ ๊ฐ์ฒด์ ํ๋ ๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ด๊ธฐํํ ์ ์๋ค.
• ๊ฐ์ฒด ๊ณต์ :
๋์ผํ ์ฐธ์กฐ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํ ๊ณณ์์ ๊ฐ์ฒด์ ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ค๋ฅธ ๊ณณ์์๋ ์ํฅ์ ๋ฏธ์น๋ค.
• ๊ฐ์ฒด ์์ฑ๊ณผ ๋ฐํ:
๋ฉ์๋ ๋ด๋ถ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฐํํ๋ฉด, ํธ์ถํ ์ชฝ์์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฐธ์กฐํ ์ ์๋ค.
student.name = name; // ์ด๋ฆ ์ด๊ธฐํ
student.age = age; // ๋์ด ์ด๊ธฐํ
student.grade = grade; // ์ฑ์ ์ด๊ธฐํ
๋ฉ์๋ ์์ ์ด ์ฝ๋๋ค์ด ์ดํด๊ฐ ์ ์๊ฐ๋ค.
์๋ง '์ด๊ธฐํ'์ ๋ํ ๊ฐ๋ ์ด ๋ถ์กฑํด์ ๊ทธ๋ฐ๊ฑฐ ๊ฐ๋ค.
์ด๊ธฐํ์ ๊ฐ๋
์ด๊ธฐํ๋ ๋ณ์๋ ๊ฐ์ฒด๊ฐ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ์ํ๋ก ๊ฐ์ ์ค์ ํ๋ ์์ ์ ์๋ฏธํ๋ค.
์ฆ, ๋ณ์๋ ๊ฐ์ฒด์ ํ๋์ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ ๊ฒ์ “์ด๊ธฐํ”๋ผ๊ณ ํ๋ค.
์ด ์ฝ๋๊ฐ ํ๋ ์ผ
1. student ๊ฐ์ฒด
• ์ด ์ฝ๋๋ createStudent ๋ฉ์๋ ๋ด๋ถ์์ ํธ์ถ๋๋ค.
• Student student = new Student();๋ก ์๋กญ๊ฒ ์์ฑ๋ Student ๊ฐ์ฒด๊ฐ ์๋ค.
• ์ด ๊ฐ์ฒด๋ ์ฒ์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ name, age, grade์ ๊ฐ์ ํ๋์๋ ์์ง ๊ฐ์ด ์ค์ ๋์ง ์์๋ค.
์๋ฅผ ๋ค์ด, name์ null, age์ grade๋ ๊ธฐ๋ณธ๊ฐ์ธ 0์ ๊ฐ์ง๊ณ ์๋ค.
2. ์ด๊ธฐํ ๊ณผ์
• student.name = name;
student ๊ฐ์ฒด์ name ํ๋์ name ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ๊ฐ์ ์ ์ฅํ๋ค.
์ฆ, ๋ฉ์๋๋ฅผ ํธ์ถํ ๋. ์ ๋ฌ๋ ์ด๋ฆ ๊ฐ์ student ๊ฐ์ฒด์ name ํ๋์ ์ค์ ํ๋ค.
• student.age = age;
age ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ๊ฐ์ student ๊ฐ์ฒด์ age ํ๋์ ์ค์ ํ๋ค.
• student.grade = grade;
• ์ฑ์ ์ ๋ํ๋ด๋ grade ๊ฐ์ student ๊ฐ์ฒด์ grade ํ๋์ ์ค์ ํ๋ค.
์ด๊ธฐํ์ ๋ชฉ์
• ๊ธฐ๋ณธ๊ฐ์ ์ํ๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ:
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, ํ๋์๋ ์ด๊ธฐ๊ฐ(๊ธฐ๋ณธ๊ฐ)์ด ๋ค์ด ์๋ค.
์๋ฅผ ๋ค์ด:
String ํ์ ์ ๊ธฐ๋ณธ๊ฐ์ด null์ด๋ค.
int ํ์ ์ ๊ธฐ๋ณธ๊ฐ์ด 0์ด๋ค.
๊ทธ๋ฌ๋, ์ค์ ํ๋ก๊ทธ๋จ์์๋ ์ด๋ฆ์ด๋ ๋์ด, ์ฑ์ ์ฒ๋ผ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ ์ค์ ํด์ผ ํ๋ค.
์ด๊ธฐํ๋ฅผ ํตํด ๊ฐ์ฒด์ ์ํ๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์๋ค.
• ์ฌ์ฉ ์ค๋น ์๋ฃ ์ํ๋ก ๋ง๋ค๊ธฐ:
์ด๊ธฐํ๋์ง ์์ ๊ฐ์ฒด๋ ๋ณ์๋ ์ ๋๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด๊ธฐํ๋ฅผ ํตํด ํด๋น ๊ฐ์ฒด๋ ๋ณ์๊ฐ ์ ๋๋ก ๋์ํ๋๋ก ๋ง๋ ๋ค.
์ด๊ธฐํ์ ์
๊ฐ์ฒด ์ด๊ธฐํ ์
Student student = new Student();
System.out.println(student.name); // null
System.out.println(student.age); // 0
System.out.println(student.grade); // 0
๊ฐ์ฒด ์ด๊ธฐํ ํ
student.name = "ํ๊ธธ๋";
student.age = 15;
student.grade = 90;
System.out.println(student.name); // ํ๊ธธ๋
System.out.println(student.age); // 15
System.out.println(student.grade); // 90
• ์ด๊ธฐํ๋์ง ์์ ์ํ์์๋ ๊ธฐ๋ณธ๊ฐ๋ง ์ถ๋ ฅ๋์ง๋ง, ์ด๊ธฐํ ํ์๋ ์ค์ ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค.
์ด๊ธฐํ๋?
๋ณ์๋ฅผ ์ฒ์ ์ฌ์ฉํ ๋ ์ ์ ํ ๊ฐ์ผ๋ก ์ค์ ํ๋ ๊ฒ.
์ด ์ฝ๋์์ ์ด๊ธฐํ๋?
Student ๊ฐ์ฒด์ name, age, grade ํ๋์ ๊ฐ์ ์ค์ ํ์ฌ, ๊ฐ์ฒด๊ฐ ํ๋ก๊ทธ๋จ์์ ์ํ๋ ์ํ๋ก ๋์ํ๋๋ก ์ค๋น์ํค๋ ์์ ์ด๋ค.