๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Today I Learned(TIL)/Java

Java ๊ธฐ๋ณธํŽธ ๊ฐ•์˜_๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•

by carrot0911 2024. 11. 26.

๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•

 

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• 1 - ์‹œ์ž‘

์ž๋ฐ”์—์„œ ์ฐธ์กฐํ˜•์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์ค‘์š”ํ•˜๋‹ค.

๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋ณด๋ฉด ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ง์ ‘ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธํ˜•, ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์ฐธ์กฐํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ธฐ๋ณธํ˜•(Primitive Type) : int, long, double, boolean์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์— ์‚ฌ์šฉํ•  ๊ฐ’์„ ์ง์ ‘ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ธฐ๋ณธํ˜•์ด๋ผ ํ•œ๋‹ค.
  • ์ฐธ์กฐํ˜•(Reference Type) : ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ(์ฃผ์†Œ)๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ฐธ์กฐํ˜•์ด๋ผ ํ•œ๋‹ค. ์ฐธ์กฐํ˜•์€ ๊ฐ์ฒด ๋˜๋Š” ๋ฐฐ์—ด์— ์‚ฌ์šฉ๋œ๋‹ค.

๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜์—๋Š” ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด ๋“ค์–ด์žˆ์ง€๋งŒ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์—๋Š” ์œ„์น˜(์ฐธ์กฐ๊ฐ’)๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค. ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ญ”๊ฐ€ ํ•˜๋ ค๋ฉด ๊ฒฐ๊ตญ ์ฐธ์กฐ๊ฐ’์„ ํ†ตํ•ด ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• - ๊ธฐ๋ณธ

  • ๊ธฐ๋ณธํ˜•์€ ์ˆซ์ž 10, 20๊ณผ ๊ฐ™์ด ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๊ฐ’์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฐธ์กฐํ˜•์€ ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋‹ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์‹ค์ œ ๊ฐ์ฒด์˜ ์œ„์น˜(์ฐธ์กฐ, ์ฃผ์†Œ)๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ฐธ์กฐํ˜•์—๋Š” ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์žˆ๋‹ค.
    • ๊ฐ์ฒด๋Š” .(dot)์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ฐพ์•„๊ฐ€์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฐฐ์—ด์€ [ ]๋ฅผ ํ†ตํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์„ ์ฐพ์•„๊ฐ€์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธํ˜•์€ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ฐธ์กฐํ˜•์€ ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ธฐ๋ณธํ˜•์€ ๋ณ€์ˆ˜์— ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด ๋‹ด๊ฒจ์žˆ๋‹ค. +, -์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
์ฐธ์กฐํ˜•์€ ๋ณ€์ˆ˜์— ๊ฐ์ฒด์˜ ์œ„์น˜์ธ ์ฐธ์กฐ๊ฐ’์ด ๋“ค์–ด ์žˆ๋‹ค. ์ฐธ์กฐ๊ฐ’์€ ๊ณ„์‚ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๋ฌผ๋ก  .์„ ํ†ตํ•ด ๊ฐ์ฒด์˜ ๊ธฐ๋ณธํ˜• ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•œ ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” ํŒ

๊ธฐ๋ณธํ˜•์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ์ฐธ์กฐํ˜•์ด๋‹ค.
๊ธฐ๋ณธํ˜•์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค. int, long, double, boolean ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
๊ธฐ๋ณธํ˜•์€ Java๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธํ˜•์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒˆ๋กœ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค.
๊ฐœ๋ฐœ์ž๋Š” ์ฐธ์กฐํ˜•์ธ ํด๋ž˜์Šค๋งŒ ์ง์ ‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.


ํด๋ž˜์Šค๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค. Student
ํด๋ž˜์Šค๋Š” ๋ชจ๋‘ ์ฐธ์กฐํ˜•์ด๋‹ค.
โœ”๏ธ ์ฐธ๊ณ  - String

Java์—์„œ String์€ ํŠน๋ณ„ํ•˜๋‹ค. String์€ ์‚ฌ์‹ค์€ ํด๋ž˜์Šค์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฐธ์กฐํ˜•์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๊ธฐ๋ณธํ˜•์ฒ˜๋Ÿผ ๋ฌธ์ž ๊ฐ’์„ ๋ฐ”๋กœ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฌธ์ž๋Š” ๋งค์šฐ ์ž์ฃผ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— Java์—์„œ ํŠน๋ณ„ํ•˜๊ฒŒ ํŽธ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• 2 - ๋ณ€์ˆ˜ ๋Œ€์ž…

๋Œ€์›์น™ : Java๋Š” ํ•ญ์ƒ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.

Java์—์„œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์€ ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ธฐ๋ณธํ˜•, ์ฐธ์กฐํ˜• ๋ชจ๋‘ ํ•ญ์ƒ ๋ณ€์ˆ˜์— ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.
๊ธฐ๋ณธํ˜•์ด๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•˜๊ณ , ์ฐธ์กฐํ˜•์ด๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.

๊ธฐ๋ณธํ˜•์€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋”๋ผ๋„ ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด ๋ณ€์ˆ˜์— ๋ฐ”๋กœ ๋“ค์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฐ’๋งŒ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 
๊ทธ๋Ÿฐ๋ฐ ์ฐธ์กฐํ˜•์˜ ๊ฒฝ์šฐ ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’๋งŒ ๋ณต์‚ฌ๋œ๋‹ค. ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ์‹ค์ œ ๊ฑด๋ฌผ์ด ๋ณต์‚ฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฑด๋ฌผ์˜ ์œ„์น˜์ธ ์ฃผ์†Œ๋งŒ ๋ณต์‚ฌ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
๋”ฐ๋ผ์„œ ๊ฐ™์€ ๊ฑด๋ฌผ์„ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•˜๋‚˜ ๋Š˜์–ด๋‚  ๋ฟ์ด๋‹ค.

๊ธฐ๋ณธํ˜•๊ณผ ๋ณ€์ˆ˜ ๋Œ€์ž…

VarChange1

package ref;

public class VarChange1 {
    public static void main(String[] args) {
        int a = 10;
        int b = a;

        System.out.println("a = " + a);
        System.out.println("b = " + b);

        // a ๋ณ€๊ฒฝ
        a = 20;
        System.out.println("๋ณ€๊ฒฝ a = 20");
        System.out.println("a = " + a);
        System.out.println("b = " + b);

        // b ๋ณ€๊ฒฝ
        b = 30;
        System.out.println("๋ณ€๊ฒฝ b = 30");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ int b = a๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ๋ณ€์ˆ˜์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ a = 20, b = 30์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ๊ฐ๊ฐ ๋ณธ์ธ์˜ ๊ฐ’๋งŒ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ์กฐํ˜•๊ณผ ๋ณ€์ˆ˜ ๋Œ€์ž…

Data

package ref;

public class Data {
    int value;
}

VarChange2

package ref;

public class VarChange2 {
    public static void main(String[] args) {
        Data dataA = new Data();
        dataA.value = 10;
        Data dataB = dataA;

        System.out.println("dataA ์ฐธ์กฐ๊ฐ’=" + dataA);  // ref.Data@41629346
        System.out.println("dataB ์ฐธ์กฐ๊ฐ’=" + dataB);  // ref.Data@41629346
        System.out.println("dataA.value = " + dataA.value);  // 10
        System.out.println("dataB.value = " + dataB.value);  // 10

        //dataA ๋ณ€๊ฒฝ
        dataA.value = 20;
        System.out.println("๋ณ€๊ฒฝ dataA.value = 20");
        System.out.println("dataA.value = " + dataA.value);  // 20
        System.out.println("dataB.value = " + dataB.value);  // 20

        //dataB ๋ณ€๊ฒฝ
        dataB.value = 30;
        System.out.println("๋ณ€๊ฒฝ dataB.value = 30");
        System.out.println("dataA.value = " + dataA.value);  // 30
        System.out.println("dataB.value = " + dataB.value);  // 30
    }
}

๋ณ€์ˆ˜์˜ ๋Œ€์ž…์€ ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค. ๋ณ€์ˆ˜ dataA์—๋Š” ์ฐธ์กฐ๊ฐ’ x001์ด ๋“ค์–ด ์žˆ๋‹ค.
๋ณ€์ˆ˜ dataA์— ๋“ค์–ด์žˆ๋Š” ์ฐธ์กฐ๊ฐ’ x001์„ ๋ณต์‚ฌํ•ด์„œ ๋ณ€์ˆ˜ dataB์— ๋Œ€์ž…ํ•œ๋‹ค.
์ฐธ๊ณ ๋กœ ๋ณ€์ˆ˜ dataA๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค! ๋ณ€์ˆ˜์— ๋“ค์–ด์žˆ๋Š” ์ฐธ์กฐ๊ฐ’๋งŒ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค.

Data dataB = dataA๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ๊ฐ’์ด ์ฐธ์กฐ๊ฐ’์ด๋‹ค.
๋”ฐ๋ผ์„œ dataA์™€ dataB๋Š” ๊ฐ™์€ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ , ๋‘ ๋ณ€์ˆ˜๋Š” ๊ฐ™์€ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.

 

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• 3 - ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

๋Œ€์›์น™ : ์ž๋ฐ”๋Š” ํ•ญ์ƒ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.

Java์—์„œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์€ ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ธฐ๋ณธํ˜•, ์ฐธ์กฐํ˜• ๋ชจ๋‘ ํ•ญ์ƒ ๋ณ€์ˆ˜์— ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.
๊ธฐ๋ณธํ˜•์ด๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•˜๊ณ , ์ฐธ์กฐํ˜•์ด๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.

๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)๋„ ๊ฒฐ๊ตญ ๋ณ€์ˆ˜์ผ ๋ฟ์ด๋‹ค.
๋”ฐ๋ผ์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋„ ์•ž์„œ ์„ค๋ช…ํ•œ ๋‚ด์šฉ๊ณผ ๊ฐ™์ด ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค.

๊ธฐ๋ณธํ˜•๊ณผ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

package ref;

public class MethodChange1 {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ „: a = " + a);  // 10
        changePrimitive(a);
        System.out.println("๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ›„: a = " + a);  // 10
    }

    static void changePrimitive(int x) {
        x = 20;
    }
}

์ฐธ์กฐํ˜•๊ณผ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

package ref;

public class MethodChage2 {
    public static void main(String[] args) {
        Data dataA = new Data();
        dataA.value = 10;
        System.out.println("๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ „: dataA.value = " + dataA.value);  // 10
        changeReference(dataA);
        System.out.println("๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ›„: dataA.value = " + dataA.value);  // 20
    }

    static void changeReference(Data dataX) {
        dataX.value = 20;
    }
}

๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
Java์—์„œ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)๋Š” ํ•ญ์ƒ ๊ฐ’์— ์˜ํ•ด ์ „๋‹ฌ๋œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฐ’์ด ์‹ค์ œ ๊ฐ’์ด๋ƒ, ์ฐธ์กฐ(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ) ๊ฐ’์ด๋ƒ์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ฌ๋ผ์ง„๋‹ค.

  • ๊ธฐ๋ณธํ˜• : ๋ฉ”์„œ๋“œ๋กœ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด, ํ•ด๋‹น ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„, ํ˜ธ์ถœ์ž์˜ ๋ณ€์ˆ˜ ๊ฐ’์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.
  • ์ฐธ์กฐํ˜• : ๋ฉ”์„œ๋“œ๋กœ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด, ์ฐธ์กฐ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด, ํ˜ธ์ถœ์ž์˜ ๊ฐ์ฒด๋„ ๋ณ€๊ฒฝ๋œ๋‹ค.

 

์ฐธ์กฐํ˜•๊ณผ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ - ํ™œ์šฉ

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

์ค‘๋ณต์„ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์†์‰ฝ๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฉ”์„œ๋“œ์— ๊ฐ์ฒด ์ „๋‹ฌ

Student

package ref;

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

Method1

package ref;

public class Method1 {
    public static void main(String[] args) {
        Student student1 = new Student();
        initStudent(student1, "ํ•™์ƒ1", 15, 90);

        Student student2= new Student();
        initStudent(student2, "ํ•™์ƒ2", 16, 80);

        printStudent(student1);
        printStudent(student2);
    }

    static void initStudent(Student student, String name, int age, int grade) {
        student.name = name;
        student.age = age;
        student.grade = grade;
    }

    static void printStudent(Student student) {
        System.out.println("์ด๋ฆ„: " + student.name + " ๋‚˜์ด: " + student.age + " ์„ฑ์ : " + student.grade);
    }
}

์ฐธ์กฐํ˜•์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ฐธ์กฐ๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ์ „๋‹ฌ๋œ ์ฐธ์กฐ๊ฐ’์„ ํ†ตํ•ด ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ๊ฐ’์„ ์ฝ์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • initStudent(Student student, ...) : ์ „๋‹ฌํ•œ ํ•™์ƒ ๊ฐ์ฒด์˜ ํ•„๋“œ์— ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.
  • printStudent(Student student) : ์ „๋‹ฌํ•œ ํ•™์ƒ ๊ฐ์ฒด์˜ ํ•„๋“œ ๊ฐ’์„ ์ฝ์–ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

 

โœ”๏ธ ์ฃผ์˜!

package ref;

import class1.Student;

public class Method1 {
    ...
}โ€‹

import class1.Student; ์ด ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜๋ฉด class1 ํŒจํ‚ค์ง€์—์„œ ์„ ์–ธํ•œ Student๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ์ ‘๊ทผ ์ œ์–ด์ž ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๋งŒ์•ฝ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค๋ฉด ์‚ญ์ œํ•˜์ž. ์‚ญ์ œํ•˜๋ฉด ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ref.Student๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

Method2

package ref;

public class Method2 {
    public static void main(String[] args) {
        Student student1 = createStudent("ํ•™์ƒ1", 15, 90);
        Student student2 = createStudent("ํ•™์ƒ2", 16, 80);

        printStudent(student1);
        printStudent(student2);
    }

    static Student createStudent(String name, int age, int grade) {
        Student student = new Student();
        student.name = name;
        student.age = age;
        student.grade = grade;
        return student;
    }

    static void printStudent(Student student) {
        System.out.println("์ด๋ฆ„: " + student.name + " ๋‚˜์ด: " + student.age + " ์„ฑ์ : " + student.grade);
    }
}

createStudent( )๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„๋„ ์ด ๋ฉ”์„œ๋“œ ์•ˆ์— ํ•จ๊ป˜ ํฌํ•จํ–ˆ๋‹ค. ์ด์ œ ์ด ๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋กœ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋ฉ”์„œ๋“œ ๋ฐ–์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ๋ฉ”์„œ๋“œ ๋ฐ–์—์„œ ์ด ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜(return)์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ’์„ ๋ฉ”์„œ๋“œ ๋ฐ–์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

 

๋ณ€์ˆ˜์™€ ์ดˆ๊ธฐํ™”

๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜

  • ๋ฉค๋ฒ„ ๋ณ€์ˆ˜(ํ•„๋“œ) : ํด๋ž˜์Šค์— ์„ ์–ธ
  • ์ง€์—ญ ๋ณ€์ˆ˜ : ๋ฉ”์„œ๋“œ์— ์„ ์–ธ, ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ์ง€์—ญ ๋ณ€์ˆ˜์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค.

๋ฉค๋ฒ„ ๋ณ€์ˆ˜, ํ•„๋“œ ์˜ˆ์‹œ

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

์ง€์—ญ ๋ณ€์ˆ˜ ์˜ˆ์‹œ

public class ClassStart3 {
    public static void main(String[] args) {
        Student student1;
        student1 = new Student();
        Student student2 = new Student();
    }
}

 

package ref;

public class MethodChange1 {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ „: a = " + a);  // 10
        changePrimitive(a);
        System.out.println("๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ›„: a = " + a);  // 10
    }

    static void changePrimitive(int x) {
        x = 20;
    }
}

a, x(๋งค๊ฐœ๋ณ€์ˆ˜)๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์ด๋‹ค.
์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํŠน์ • ์ง€์—ญ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ผ๋Š” ๋œป์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ x๋Š” changePrimitive( ) ๋ฉ”์„œ๋“œ์˜ ๋ธ”๋ก์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. changePrimitive( ) ๋ฉ”์„œ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์ œ๊ฑฐ๋œ๋‹ค. a ๋ณ€์ˆ˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. main( ) ๋ฉ”์„œ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์ œ๊ฑฐ๋œ๋‹ค.

๋ณ€์ˆ˜์˜ ๊ฐ’ ์ดˆ๊ธฐํ™”

  • ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ : ์ž๋™ ์ดˆ๊ธฐํ™”
    • ์ธ์Šคํ„ด์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.
    • ์ˆซ์ž(int) = 0, boolean = false, ์ฐธ์กฐํ˜• = null(null ๊ฐ’์€ ์ฐธ์กฐํ•  ๋Œ€์ƒ์ด ์—†๋‹ค๋Š” ๋œป์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.)
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ดˆ๊ธฐ๊ฐ’์„ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ง€์—ญ ๋ณ€์ˆ˜ : ์ˆ˜๋™ ์ดˆ๊ธฐํ™”
    • ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ ์ง์ ‘ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค.

InitData

package ref;

public class InitMain {
    public static void main(String[] args) {
        InitData initData = new InitData();
        System.out.println("value1 = " + initData.value1);
        System.out.println("value2 = " + initData.value2);
    }
}

value1์€ ์ดˆ๊ธฐ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์ˆซ์ž๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.
value2๋Š” 10์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์ง€์ •ํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ 10์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

 

null

์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์—๋Š” ํ•ญ์ƒ ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„์ง ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ์—†๊ฑฐ๋‚˜, ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์„ ๋‚˜์ค‘์— ์ž…๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์—์„œ ์•„์ง ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์ด ์—†๋‹ค๋ฉด null์ด๋ผ๋Š” ํŠน๋ณ„ํ•œ ๊ฐ’์„ ๋„ฃ์–ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค. null์€ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”, ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.

null ๊ฐ’ ํ• ๋‹น

package ref;

public class Data {
    int value;
}

NullMain1

package ref;

public class NullMain1 {
    public static void main(String[] args) {
        Data data = null;
        System.out.println("1. data = " + data);
        data = new Data();
        System.out.println("2. data = " + data);
        data = null;
        System.out.println("3. data = " + data);
    }
}

 

NullPointerException

๋งŒ์•ฝ ์ฐธ์กฐ๊ฐ’ ์—†์ด ๊ฐ์ฒด๋ฅผ ์ฐพ์•„๊ฐ€๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ?
์ด ๊ฒฝ์šฐ NullpointerException์ด๋ผ๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๊ดด๋กญํžˆ๋Š” ์˜ˆ์™ธ์ด๋‹ค.
NullPointerException์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ null์„ ๊ฐ€๋ฆฌํ‚ค๋‹ค(Pointer)์ธ๋ฐ, ์ด๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ(Exception)๋‹ค. null์€ ์—†๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๊ฒฐ๊ตญ ์ฃผ์†Œ๊ฐ€ ์—†๋Š” ๊ณณ์„ ์ฐพ์•„๊ฐˆ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ด๋‹ค.

๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” .(dot)์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฐธ์กฐ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฐธ์กฐ๊ฐ’์ด null์ด๋ผ๋ฉด ๊ฐ’์ด ์—†๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ, ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๊ฐ€ ์—†๋‹ค. NullPointerException์€ ์ด์ฒ˜๋Ÿผ null์— .(dot)์„ ์ฐ์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

package ref;

public class NullMain2 {
    public static void main(String[] args) {
        Data data = null;
        data.value = 10;  // NullPointerException ์˜ˆ์™ธ ๋ฐœ์ƒ
        System.out.println("data = " + data.value);
    }
}

null ๊ฐ’์€ ์ฐธ์กฐํ•  ์ฃผ์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฐธ์กฐํ•  ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด java.lang.NullPointerException์ด ๋ฐœ์ƒํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค.
์ฐธ๊ณ ๋กœ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋‹ค์Œ ๋กœ์ง์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ null

์ง€์—ญ ๋ณ€์ˆ˜์˜ null ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€ ์•Š๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ null์ธ ๊ฒฝ์šฐ์—๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

package ref;

public class NullMain3 {
    public static void main(String[] args) {
        BigData bigData = new BigData();
        System.out.println("bigData.count = " + bigData.count);
        System.out.println("bigData.data = " + bigData.data);

        System.out.println("bigData.data.value = " + bigData.data.value);
    }
}
  • bigData.count๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด 0์ด ์ถœ๋ ฅ๋œ๋‹ค.
  • bigData.data๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ์ฐธ์กฐ๊ฐ’์ธ null์ด ์ถœ๋ ฅ๋œ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” ์•„์ง ์•„๋ฌด๊ฒƒ๋„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
  • bigData.data.value๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด data์˜ ๊ฐ’์ด null์ด๋ฏ€๋กœ null์— .(dot)์„ ์ฐ๊ฒŒ ๋˜๊ณ , ๋”ฐ๋ผ์„œ ์ฐธ์กฐํ•  ๊ณณ์ด ์—†์œผ๋ฏ€๋กœ NullPointerException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
package ref;

public class NullMain4 {
    public static void main(String[] args) {
        BigData bigData = new BigData();
        bigData.data = new Data();
        
        System.out.println("bigData.count = " + bigData.count);
        System.out.println("bigData.data = " + bigData.data);

        // NullPointerException
        System.out.println("bigData.data.value = " + bigData.data.value);
    }
}

 

์ •๋ฆฌ

๋Œ€์›์น™ : ์ž๋ฐ”๋Š” ํ•ญ์ƒ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.

Java์—์„œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์€ ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ธฐ๋ณธํ˜•, ์ฐธ์กฐํ˜• ๋ชจ๋‘ ํ•ญ์ƒ ๋ณ€์ˆ˜์— ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.
๊ธฐ๋ณธํ˜•์ด๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•˜๊ณ , ์ฐธ์กฐํ˜•์ด๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ๋Œ€์ž…ํ•œ๋‹ค.
๊ธฐ๋ณธํ˜•์ด๋“  ์ฐธ์กฐํ˜•์ด๋“  ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๋ฐฉ์‹์€ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์— ๋”ฐ๋ผ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง„๋‹ค.

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• - ๊ธฐ๋ณธ

  • ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋ณด๋ฉด ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธํ˜•์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์ฐธ์กฐํ˜•์ด๋‹ค. ํด๋ž˜์Šค์™€ ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๋Š” ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐํ˜•์ด๋‹ค.
  • ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋Š” ๊ฐ’์„ ์ง์ ‘ ์ €์žฅํ•˜์ง€๋งŒ, ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐ(์ฃผ์†Œ)๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.
  • ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋Š” null์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” null์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• - ๋Œ€์ž…

  • ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜• ๋ชจ๋‘ ๋Œ€์ž… ์‹œ ๋ณ€์ˆ˜ ์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ ์ฝ๊ณ  ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค.
  • ๊ธฐ๋ณธํ˜•์€ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•˜๊ณ , ์ฐธ์กฐํ˜•์€ ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค! ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค!
    ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณ€์ˆ˜์— ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด์žˆ๋“  ๊ฐ„์— ๊ทธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•œ๋‹ค.

๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜• - ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

  • ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์‹œ ๊ธฐ๋ณธํ˜•์€ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ํ˜ธ์ถœ์ž์˜ ๋ณ€์ˆ˜ ๊ฐ’์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.
  • ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์‹œ ์ฐธ์กฐํ˜•์€ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด, ํ˜ธ์ถœ์ž์˜ ๊ฐ์ฒด๋„ ๋ณ€๊ฒฝ๋œ๋‹ค.