Item 57. Local Variable Scope

์ง€์—ญ๋ณ€์ˆ˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ผ

์ง€์—ญ๋ณ€์ˆ˜ ๋ฒ”์œ„ ์ตœ์†Œํ™”๋Š” ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ ๊ด€ํ›ค์„ ์ตœ์†Œํ™”ํ•˜๋ผ๋Š” ์›์น™๊ณผ ๊ฐ™์€ ์›๋ฆฌ๋กœ, ์œ ํšจ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œ๋กœ ์ค„์ด๋ฉด์„œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•จ์ด๋‹ค.

์ง€์—ญ๋ณ€์ˆ˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๊ฐ€์žฅ ์ฒ˜์Œ ์“ฐ์ผ ๋•Œ ์„ ์–ธ

  • ๊ฐ€๋Šฅํ•œํ•œ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”

  • ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ์‹œ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋ฅผ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด while๋ฌธ๋ณด๋‹ค for๋ฌธ์„ ์‚ฌ์šฉ

  • ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์— ์ง‘์ค‘(๊ธฐ๋Šฅ๋ณ„๋กœ ์ชผ๊ฐœ๊ธฐ)

์ด์ค‘ while๋ฌธ๋ณด๋‹ค for๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์€ ์ด์œ ๋Š” ์•„๋ž˜ ์˜ˆ์‹œ ์ฝ”๋“œ๋กœ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฒฐ๊ตญ ๋ณ€์ˆ˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์น˜ ์•Š์€ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

class Example {

    public static void main(String[] args) {

        // for-each ๋ฌธ
        for (Element e : c) {
            doSomething(e);
        }

        // ๋ฐ˜๋ณต์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ for๋ฌธ ์‚ฌ์šฉ 
        for (Iterator<Element> i = c.iterator(); i.hasNext(); ) {
            Element e = i.next();
            doSomething(e, i);
        }

        // while๋ฌธ ์‚ฌ์šฉ ์‹œ..
        Iterator<Element> i = c.iterator();
        while (i.hasNext()) {
            doSomething(i.next());
        }

        Iterator<Element> i2 = c.iterator();
        while (i.hasNext()) { // ์ด๋ฏธ ์ˆœํšŒํ•œ i๋ฅผ ๋‹ค์‹œ ์ˆœํšŒ ์‹œ๋„
            doSomething(i2.next()); // ์‹คํ–‰๋˜์ง€ ์•Š์Œ
        }
    }
}

Last updated