JavaRush /Java Blog /Random-KO /null์€ Java์˜ ๊ฐ์ฒด์ž…๋‹ˆ๊นŒ?

null์€ Java์˜ ๊ฐ์ฒด์ž…๋‹ˆ๊นŒ?

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
null์€ ๊ฐ์ฒด์ธ๊ฐ€์š”? ๋‚˜๋Š” ์ ˆ๋Œ€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. (null instanceof Object)๊ฐ€์น˜๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์—์„œ false. null์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ์ถ”๊ฐ€ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
null์€ Java์˜ ๊ฐ์ฒด์ž…๋‹ˆ๊นŒ?  - 1
  1. null ๊ฐ’์ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด null์ด๊ณ  ๋ฉ”์„œ๋“œ๊ฐ€ ๋น„์ •์  x.m()์ด๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค . ๊ทธ๋Ÿฐ๋ฐ ์ •์  ๋ฉ”์†Œ๋“œ๋ผ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋งŒ ์ค‘์š” ํ•˜๊ณ  ๊ฐ’์€ ๋ฌด์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.xmmx

  2. ๋ชจ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ null๋งŒ ์žˆ๊ณ  ๊ฐ ํด๋ž˜์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ null์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ ๋ฅผ ๋“ค์–ด ((String) null == (Hashtable) null).

  3. ๋ฉ”์„œ๋“œ๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ์— ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ null์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค(์ผ๋ถ€ ๋ฉ”์„œ๋“œ๋Š” null ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ). ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ผ๊ณ  ์“ธ ์ˆ˜๋„ System.out.println (null)์žˆ์ง€๋งŒ butstring.compareTo (null)์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ null์ด ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ null์ด ํ—ˆ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ•ญ์ƒ ๋ฉ”์†Œ๋“œ์˜ javadoc ์ฃผ์„์— ํ‘œ์‹œํ•˜์‹ญ์‹œ์˜ค.

  4. ๋ฒ„์ „ 1.1~1.1.5์˜ JDK์—์„œ๋Š” ์ต๋ช… ๋‚ด๋ถ€ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ์— ๋ฆฌํ„ฐ๋Ÿด ์ธ์ˆ˜๋กœ null์„ ์ „๋‹ฌํ•˜๋ฉด ( new SomeClass(null) { ...}์˜ˆ: ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ null ๊ฐ’์ด ์žˆ๋Š” ํ‘œํ˜„์‹์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๊ฐ•์ œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) null, ํ˜•์‹new SomeClass((String) null) { ...}

  5. ์ผ๋ฐ˜์ ์œผ๋กœ null์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„๋˜๋Š” ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (์ดˆ๊ธฐํ™” ์—†์Œ). ์•„์ง ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ ๋˜๋Š” ์Šฌ๋กฏ์ž…๋‹ˆ๋‹ค.

    • ์กด์žฌํ•˜์ง€ ์•Š์Œ/์ ์šฉํ•  ์ˆ˜ ์—†์Œ ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ง„ ํŠธ๋ฆฌ์˜ ํ„ฐ๋ฏธ๋„ ๋…ธ๋“œ๋Š” null ์ž์‹์ด ์žˆ๋Š” ์ผ๋ฐ˜ ๋…ธ๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋น„์–ด ์žˆ์Œ (๋ฌด์–ธ๊ฐ€์˜ ๋น„์–ด ์žˆ์Œ). ์˜ˆ๋ฅผ ๋“ค์–ด null์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นˆ ํŠธ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด์ „ ์‚ฌ๋ก€์™€ ์ƒ๋‹นํžˆ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”(์‹ค์ œ๋กœ ํ˜ผ๋™๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค). ์ฐจ์ด์ ์€ null์ด ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ํŠธ๋ฆฌ ๋…ธ๋“œ์ธ์ง€ ์—ฌ๋ถ€ ๋˜๋Š” null์ด ๊ฐ’์„ ํŠธ๋ฆฌ ๋…ธ๋“œ๋กœ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

    ์ˆœ์ฐจ ์ฝ˜์†” ์ถœ๋ ฅ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ง„ ํŠธ๋ฆฌ ๋…ธ๋“œ์˜ ์„ธ ๊ฐ€์ง€ ๊ตฌํ˜„์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.


  6. // null ะพะทะฝะฐั‡ะฐะตั‚ ยซะฝะต ะฟั€ะธะผะตะฝะธะผะพยป
    // ะ—ะดะตััŒ ะฝะตั‚ ะฟัƒัั‚ะพะณะพ ะดะตั€ะตะฒะฐ.
    class Node {
      Object data;
      Node left, right;
    
      void print() {
        if (left != null)
          left.print();
        System.out.println(data);
        if (right != null)
          right.print();
      }
    }

  7. // null ะพะทะฝะฐั‡ะฐะตั‚ ะฟัƒัั‚ะพะต ะดะตั€ะตะฒะพ
    // ะพะฑั€ะฐั‚ะธั‚ะต ะฒะฝะธะผะฐะฝะธะต ะฝะฐ ัั‚ะฐั‚ะธั‡ะตัะบะธะต ะธ ะฝะตัั‚ะฐั‚ะธั‡ะตัะบะธะต ะผะตั‚ะพะดั‹
    
    class Node {
      Object data;
      Node left, right;
    
      void static print(Node node) {
        if (node != null) node.print();
      }
    
      void print() {
        print(left);
        System.out.println(data);
        print(right);
      }
    }

  8. // ะžั‚ะดะตะปัŒะฝั‹ะน ะบะปะฐัั ะดะปั Empty
    // null ะฝะต ะธัะฟะพะปัŒะทัƒะตั‚ัั
    
    interface Node { void print(); }
    
    class DataNode implements Node{
      Object data;
      Node left, right;
    
      void print() {
        left.print();
        System.out.println(data);
        right.print();
      }
    }
    
    class EmptyNode implements Node {
      void print() { }
    }
๋‹ต๋ณ€ ์ž‘์„ฑ์ž: ์ธ๊ณต ์ง€๋Šฅ ๋ถ„์•ผ์˜ ๋ฏธ๊ตญ ๊ณผํ•™์ž์ด์ž Google ์—ฐ๊ตฌ ์ฑ…์ž„์ž์ธ Peter Norvig
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION