์๋ฐ์์๋ ๋ณ์์ ํ์ ์ ํฌ๊ฒ ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ผ๋ก ๋ถ๋ฅํ๋ค.
๊ธฐ๋ณธํ
- int, long, boolean, double ํ๊ณผ ๊ฐ์ด ๋ณ์์ ์ฌ์ฉํ ๊ฐ์ '์ง์ ' ๋ฃ์ ์ ์๋ ๋ฐ์ดํฐ ํ์
- ์ฐ์ฐ๊ฐ๋ฅํจ.
์ฐธ์กฐํ
- School school1=new School(); , int[] students ์ ๊ฐ์ด ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํ '์ฐธ์กฐ๊ฐ'์ ์ ์ฅํ๋ ๋ฐ์ดํฐ ํ์ .
- ๊ฐ๋ฐ์๊ฐ ์ ํ๋ค
- ์ ์์์ ๊ฐ์ด ๊ฐ์ฒด ๋๋ ๋ฐฐ์ด์์ ์ฌ์ฉ๋จ.
- ๊ฐ์ฒด : ' . ' ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๊ฐ์ฒด์ ์ฐพ์๊ฐ์ ์ฌ์ฉํจ. ex) school1.name
- ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํจ. (๊ฐ์ฒด์ ํด๋์ค ๋ฉค๋ฒ๋ณ์์ ์ ๊ทผํ ๊ฒฝ์ฐ๋ ๊ฐ๋ฅํจ.)
- ํด๋์ค๋ ๋ชจ๋ ์ฐธ์กฐํ์ด๋ค.
- String ์ญ์ ์ฌ์ค ํด๋์ค์ด๋ฉฐ, ์ฐธ์กฐํ์ด๋ค.
Student s1 = new Student();
s1.grade = 100;
Student s2 = new Student();
s2.grade = 90;
int sum = s1.grade + s2.grade; //์ฐ์ฐ ๊ฐ๋ฅ
์๋ฐ๋ ํญ์ ๋ณ์์ ๊ฐ์ ๋ณต์ฌํด์ ๋์ ํ๋ค!
๊ธฐ๋ณธํ, ์ฐธ์กฐํ ๋ชจ๋ ๋ณ์์ ๊ฐ์ ๋ณต์ฌํด์ ๋์ ํ๋ ์๋ฆฌ์ด๋ค.
๋จ, ๊ธฐ๋ณธํ์ ๊ฒฝ์ฐ ๋ณ์ ์์ ์๋ ์ค์ ๊ฐ์ ๋ณต์ฌ ํ ๋์ ํ๋ฉฐ,
์ฐธ์กฐํ์ ๊ฒฝ์ฐ ๋ณ์ ์์ ์๋ ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํด์ ๋์ ํ๋ค.
์ฆ ์ค์ ๊ฐ์ด ์๋, ๋ณ์๊ฐ ๋ด์๋๊ณ ์๋ ์ฃผ์๊ฐ(์ฐธ์กฐ๊ฐ)๋ง ๋ณต์ฌ๋๋ ๊ฒ์ด๋ค.
-> ๊ฐ์ ๊ฐ์ ์ฐพ์๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋์ด๋ ๊ฒ.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์ฐธ์กฐํ ๋ฐ์ดํฐ ํ์ ์์์ ๋์ ์ ํ๋ค๊ณ ํด๋, ์ค์ ๋ณ์๊ฐ ๋ด์๋๊ณ ์๋ ๊ณ ์ ๊ฐ์ ๋ณํ๋ ์๋ค.
- ๊ธฐ๋ณธํ ๋์
int a=10;
int b=a;
- ์ฐธ์กฐํ ๋์
Student s1 = new Student();
Student s2 = s1;
// s2์๋ s1์ ๊ฐ์ฒด์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ(์ฃผ์๊ฐ)๋ง ๋ณต์ฌ๋๋ค
- ์ฐธ์กฐํ์ ๋ณ์๋์
package ref1;
public class Data
{
int value;
}
Dataํด๋์ค๊ฐ ์กด์ฌํ ๋ ๋ฉค๋ฒ๋ณ์๋ value์ด๋ค.
๋ฉ์ธ ๋ฉ์๋์์ Dataํด๋์ค๋ฅผ ํตํด ๋ณ์๋ฅผ ์์ฑํ๊ณ , ๊ฐ์ ๋์ ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น.
package ref1;
public class Var
{
public static void main(String[] args)
{
Data dataA = new Data();
dataA.value = 10;
Data dataB = dataA; //dataA์ ์ฃผ์๊ฐ์ dataB์ ๋ณต์ฌ, ๋์
!
System.out.println("dataA ์ฐธ์กฐ๊ฐ=" + dataA); //dataA ์ฐธ์กฐ๊ฐ=ref.Data@x001
System.out.println("dataB ์ฐธ์กฐ๊ฐ=" + dataB); //dataB ์ฐธ์กฐ๊ฐ=ref.Data@x001
System.out.println("dataA.value = " + dataA.value); //dataA.value = 10
System.out.println("dataB.value = " + dataB.value); //dataB.value = 10
//dataA ๋ณ๊ฒฝ
dataA.value = 20;
System.out.println("๋ณ๊ฒฝ dataA.value = 20"); //๋ณ๊ฒฝ dataA.value = 20
System.out.println("dataA.value = " + dataA.value); //dataA.value = 20
System.out.println("dataB.value = " + dataB.value); //dataB.value = 20
//dataB ๋ณ๊ฒฝ
dataB.value = 30;
System.out.println("๋ณ๊ฒฝ dataB.value = 30"); //๋ณ๊ฒฝ dataB.value = 30
System.out.println("dataA.value = " + dataA.value); //dataA.value = 30
System.out.println("dataB.value = " + dataB.value); //dataB.value = 30
}
}
ใด dataA ๋ณ์: Dataํ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ์ ์ฅํ๋ค.
๊ฐ์ฒด์ value ๋งค๊ฐ๋ณ์์ 10์ ์ ์ฅํ๋ค.
Data dataB = dataA; ์ฝ๋๋ฅผ ํตํด dataA์ ์๋ ์ฐธ์กฐ๊ฐ์ด ๋ณต์ฌ๋ผ์ dataB์ ๋์ ๋๋ค.
๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ์ธ์คํด์ค๊ฐ ์๋, ๋ณ์์ ๋ค์ด์๋ ์ฐธ์กฐ๊ฐ๋ง ๋ณต์ฌ๋ผ์ ์ ๋ฌ๋๋ค.
dataA.value=20์
dataA(x001์ด๋ผ๋ ์ฃผ์๊ฐ)์ value๊ฐ์ 10์์ 20์ผ๋ก ๋ณ๊ฒฝํ๋ค๋ ์๋ฏธ๋ค.
๊ทธ๋ฐ๋ฐ dataA์ dataB๋ ๊ฐ์ ์ฐธ์กฐ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๊ธฐ๋๋ฌธ์ dataA.value = dataB.value =20 ์ด๋ค.
๋ฉ์๋ ํธ์ถ์
๊ธฐ๋ณธํ: ๋ณํ์ง ์๋๋ค.
์ฐธ์กฐํ: ๋ณํ๋ค.
๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ ๋งค๊ฐ๋ณ์(ํ๋ผ๋ฏธํฐ)๋ ๋ณ์๋ค.
๋ฐ๋ผ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๊ฐ์ ์ ๋ฌํ๋ ๊ฒ๋ ๊ฐ์ ๋ณต์ฌํด์ ์ ๋ฌํ๋ค.
- ๊ธฐ๋ณธํ ๋ฉ์๋ ํธ์ถ
public static void main(String[] args)
{
int a = 10;
changeOne(a);
}
static void changeOne(int x)
{
x=20;
}
์์ ์ฝ๋๋ ๋ฉ์ธ ๋ฉ์๋ ์์์ changeOne()๋ฉ์๋์ 10์ด๋ผ๋ ๊ฐ์ ์ ๋ฌํด์ ํธ์ถํ๋ค.
๊ทธ๋ฆฌ๊ณ ํธ์ถ๋ changeOne()๋ฉ์๋ ์์์ x=20์ ์๋ก์ด ๊ฐ์ผ๋ก ๋์ ํ๋ค.
x์ ๊ฐ์ 20์ผ๋ก ๋ณ๊ฒฝ, a=10์ผ๋ก ์ ์ง๋๋ค.
- ์ฐธ์กฐํ ๋ฉ์๋ ํธ์ถ
public static void main(String[] args)
{
Data dataA = new Data();
dataA.value = 10;
changeOne(dataA);
}
static void changeOne(Data dataX)
{
dataX.value= 20;
}
์์ ์ฝ๋์์ ๋ฉ์ธ ๋ฉ์๋ ์์์ Data ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ,
์ฐธ์กฐ๊ฐ์ dataA์ ๋ด๋๋ค.
dataA.value = 10;
์ฐธ์กฐ๊ฐx001 ์ Data ์ธ์คํด์ค ์์ value ๋งค๊ฐ๋ณ์์ 10์ด ์ ์ฅ๋๋ค.
๋ณ์ dataA๋ฅผ ์ ๋ฌํด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด
dataA, dataX ๋ชจ๋ ๊ฐ์ ์ฐธ์กฐ๊ฐ์ ๊ฐ๊ฒ ๋๋ค.
์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํด์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
changeOne() ๋ฉ์๋ ์์์ dataX.value์ ์๋ก์ด ๊ฐ 20์ ๋์ ํ๋ฉด,
์ฐธ์กฐ๊ฐ x001 ์ธ์คํด์ค์ ์ ๊ทผํด์ ๊ทธ ์์ ์๋ value๊ฐ์ 20์ผ๋ก ๋ณ๊ฒฝํ ๊ฒ์ด ๋๋ค.
์์์ ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํด์ ๋ณด๋๊ธฐ ๋๋ฌธ์, dataA์ dataX๋ ๊ฐ์ ์ฐธ์กฐ๊ฐ์ ์ฐธ๊ณ ํ๋ค.
๊ทธ๋์ dataA.value = dataX.value = 20 ์ด ๋๋ค.
์ฆ, "์ฐธ์กฐ๊ฐ์ ์์ ์ธ์คํด์ค๊น์ง ๋ค์ด๊ฐ์ ๋ฐ๊ฟ์ง๋ค. ์๋ํ๋ฉด ๋์ ์ฐธ์กฐ๊ฐ์ ๊ฐ์, ๊ฐ์ ๊ฒ์ ๊ฐ๋ฅดํค๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค."
ํ๋ฆฐ ๋ถ๋ถ์ด๋ ์ด์ํ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋๊ธ๋ก ์ง์ ํด์ฃผ์ธ์!
๊ฐ์ฌํฉ๋๋ค :)
'๐ป > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์ ๊ทผ ์ ์ด์ (private, default, protected, public) (0) | 2024.08.10 |
---|---|
[JAVA] ์์ฑ์์ this. (1) | 2024.08.10 |
[JAVA] ํด๋์ค(Class), ๊ฐ์ฒด, ์ธ์คํด์ค (0) | 2024.07.18 |
[JAVA] ๋ฉ์๋(Method), ๋งค๊ฐ๋ณ์(Parameter), ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ (0) | 2024.07.15 |
[JAVA] ๋ฐฐ์ด ์ ์ธ๊ณผ ์์ฑ, 2์ฐจ์๋ฐฐ์ด +์ฐธ์กฐํ,๊ธฐ๋ณธํ (1) | 2024.07.15 |