GiantStepDEV

์ฐธ์กฐ ํƒ€์ž…(Reference Type)

- ์ฐธ์กฐ ํƒ€์ž…์€ ๋ณ€์ˆ˜์— ์‹ค์ œ๊ฐ’์ด ์ €์žฅ๋œ ์ฃผ์†Œ ์ €์žฅ

(๊ธฐ๋ณธ ํƒ€์ž…์€ ์‹ค์ œ ๊ฐ’ ์ €์žฅ)

- ๋ฐฐ์—ด ํƒ€์ž…, ์—ด๊ฑฐ ํƒ€์ž…, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, String ๋ฌธ์ž์—ด์ด ์žˆ๋‹ค.

- ์Šคํƒ ์˜์—ญ์— ํž™ ์˜์—ญ์˜ ๊ฐ์ฒด ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง.

- ์ฐธ์กฐํ˜• ํƒ€์ž…์˜ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ null ์‚ฌ์šฉ ๊ฐ€๋Šฅ(๊ธฐ๋ณธํ˜• ํƒ€์ž…์€ 0)

๋ณ€์ˆ˜์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

๋ฉ”์†Œ๋“œ ์˜์—ญ(static)

 : JVM์ด ์‹œ์ž‘ํ•  ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ

ํž™ ์˜์—ญ(heap)

 : ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ, ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์€ ์Šคํƒ(stack)์˜์—ญ์˜ ๋ณ€์ˆ˜๋‚˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ•„๋“œ์—์„œ ์ฐธ์กฐ

 ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•„๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์˜๋ฏธ ์—†๋Š” ๊ฐ์ฒด๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์“ฐ๋ ˆ๊ธฐ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  JVM์€ Garbage Collector๋ฅผ ์‹คํ–‰์‹œ์ผœ ์Šค๋ ˆ๊ธฐ ๊ฐ์ฒด๋ฅผ ํž™์˜์—ญ์—์„œ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•จ

์Šคํƒ ์˜์—ญ(stack)

 : ๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌํ•˜๋ฉฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ํ• ๋‹นํ•˜๋ฉฐ, ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ํ”„๋ ˆ์ž„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ํ”„๋ ˆ์ž„์„ ์ œ๊ฑฐํ•˜๋Š” ๋™์ž‘ ์ˆ˜ํ–‰

 ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋œ {} ์•ˆ์—์„œ๋งŒ ์Šคํƒ์œผ๋กœ ์กด์žฌํ•˜๊ณ  {}์„ ๋ฒ—์–ด๋‚˜๋ฉด ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋จ.

 ์ฆ‰, ๋ฉ”์†Œ๋“œ/if๋ฌธ/for๋ฌธ ๋“ฑ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ๋กœ์ปฌ ๋ณ€์ˆ˜ ์Šคํƒ์—๋งŒ ์กด์žฌํ•˜์—ฌ ํ•ด๋‹น ๋ธ”๋ก์„ ๋น ์ ธ ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉด ์ œ๊ฑฐ๊ฐ€ ๋˜์–ด ์™ธ๋ถ€์—์„œ๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•จ.

์ฐธ์กฐ๋ณ€์ˆ˜์˜ ==, != ์—ฐ์‚ฐ

์ฐธ์กฐ ํƒ€์ž… ๋ณ€์ˆ˜๋“ค ๊ฐ„์˜ ==,!= ์—ฐ์‚ฐ์€ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋–„ ์‚ฌ์šฉํ•จ.

public class RefType {
    public static void main(String[] args) {
        String name1 = "์ง„๋ถ€์—ฐ";
        String name2 = "์ง„๋ถ€์—ฐ";
        String name3 = new String("์ง„๋ถ€์—ฐ");
        if(name1 == name3) { // ๊ฐ์ฒด ์ฃผ์†Œ๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธ.
            System.out.println("๋‘๊ฐœ์˜ ์ด๋ฆ„์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๊ฐ™์Œ");
        } else System.out.println("๋‘๊ฐœ์˜ ์ด๋ฆ„์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋‹ค๋ฆ„"); // ์‹คํ–‰๊ฒฐ๊ณผ

        if(name1 == name2) { // ๊ฐ์ฒด ์ฃผ์†Œ๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธ.
            System.out.println("๋‘๊ฐœ์˜ ์ด๋ฆ„์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๊ฐ™์Œ"); // ์‹คํ–‰๊ฒฐ๊ณผ
        } else System.out.println("๋‘๊ฐœ์˜ ์ด๋ฆ„์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋‹ค๋ฆ„");

        if(name1.equals(name3)) { // ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ์‹ค์ œ ๊ฐ’์ด ๊ฐ™์€์ง€ ํ™•์ธ.
            System.out.println("๋‘๊ฐœ์˜ ์ด๋ฆ„์˜ ๋‚ด์šฉ์ด ๊ฐ™์Œ"); // ์‹คํ–‰๊ฒฐ๊ณผ
        } else System.out.println("๋‘๊ฐœ์˜ ์ด๋ฆ„์˜ ๋‚ด์šฉ์ด ๋‹ค๋ฆ„");
    }
}

 

profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!