[Kotlin] Null

์๋ฐ์์ ์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ฉด ํํ ๋ง๋๋๊ฒ NullPointerException์ด๋ค.
๊ทผ๋ฐ ์ด๊ฒ๋ ํ์ ์ ์ ์ด์ฉํ๋ฉด ์์ฃผ ์์ ํ๊ณ ํธ๋ฆฌํ๊ฒ ์ ์ดํ ์ ์๋ค.
์๋ฐ์์๋ ๋ชจ๋ ํด๋์ค ํ์ ์ ์ ๋ถ null์ ๋์ ํ ์ ์์ง๋ง ์ฝํ๋ฆฐ์ ๊ทธ๋ ์ง ์๋ค. ์ฝํ๋ฆฐ์์๋ ํ์ ๋ค์ ?๋ฅผ ๋ถ์ธ null๊ฐ๋ฅ(nullable) ํ์ ์๋ง null์ ๋ฃ๋๋ก ํ๋ค.
์ด๋ฅผ ํตํด ๋ ์ค๋ฅ๋ฅผ ์ปดํ์ผํ์์ ์์ถํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.

nullable์ด ์๋๋ฐ null์ ๋ฃ์์ผ๋ ์๋ฌ

์๋จ
?: ์ฐ์ฐ์
๊ทธ๋ฆฌ๊ณ null ์ฒ๋ฆฌ์ ํธ๋ฆฌํ ์๋น์ค ์ฐ์ฐ์๋ผ๋ ๊ฒ๋ ์ ๊ณตํ๋ค.
A ?: B
์์ ํํ๋ฅผ ๊ฐ์ง๋๋ฐ, A๊ฐ null์ผ ๊ฒฝ์ฐ B๋ฅผ ๋ฐํํ๋๋ก ๋์ด์๋ค.
๊ทธ๋์ ๊ตฌ์ง๊ตฌ์งํ๊ฒ if๊ฐ์๊ฑธ ๋ง ๋ถ์ผ ํ์๊ฐ ์๋ค.



?. ์ฐ์ฐ์
์์ ํ ๋ฉค๋ฒํธ์ถ ์ฐ์ฐ์๋ก
?.๋ผ๋ ๋๋ ์๋ค.
A?.B
์์ ํํ์ A๊ฐ null์ด๋ฉด null์ ๋ฐํํ๊ณ , null์ด ์๋๋ฉด A.B๋ฅผ ๋ฐํํ๋ ํํ์์ด๋ค.
์๋๋ name์ด๋ผ๋ nullable ๋ฌธ์์ด ๋ณ์๊ฐ null์ด ์๋๋ฉด ๋ฉค๋ฒ์ธ length๋ฅผ ์ถ๋ ฅํ๊ณ , null์ด๋ฉด -1๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ค.



!! ์ฐ์ฐ์
nullable ํ์
์ ๊ฐ์ ๋ก nonnullํ์
์ผ๋ก ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ ์ฐ์ฐ์๋ ์๋ค.
์๋ nullable๊ณผ nonnullํ์
์ ์๋ก๊ฐ์ ์ง์ ์ ์ธ ํธํ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ ์๋์ ๊ฐ์ ์ฝ๋๋ ์๋ฌ๊ฐ ๋๋ค.

์๋ ์ ๊ฑธ ์ ์์ ์ผ๋ก ๋์ํ๊ฒ ํ๋ ค๋ฉด ์์ ์ธ๊ธํ ?:๋ฅผ ์ฐ๋๊ฒ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
๊ทผ๋ฐ ๊ฐ๋ null์ด ์๋๋ผ๋๊ฑธ ํ์ ํ ์ ์์๋๊ฐ ์๋ค.
!! ์ฐ์ฐ์๋ ๊ทธ๋ด๋ ์ด๋ค.
์๋ ํํ์์ A๋ฅผ nonnull๋ก ๋ฐ๊ฟ๋ฒ๋ฆฐ๋ค.
A!!

์ ๋์ํ๋ค.
๊ทธ๋์ null์ผ ๊ฒฝ์ฐ ์์ธ๊ฐ ํฐ์ง๋ค.

์์ฐ๋๊ฒ ์ข๋ค.
ํ๋ซํผ ํ์
!
์ฝํ๋ฆฐ์ ์ฐ๋ค๋ณด๋ฉด ์๋ฐ์ api๋ฅผ ๋ก๊ฒจ์ธ ์ผ์ด ์๋ค.
์ด์ ๊ป ์์์ ์ธ๊ธํ๊ฒ์ฒ๋ผ ์๋ฐ์ ์ฝํ๋ฆฐ์ ํ์
์์คํ
์ด ์ข ๋ค๋ฅด๋ค.
๊ทธ๋์ ์ฝํ๋ฆฐ์์ ์๋ฐ์ ํด๋์คํ์
์ !๊ฐ ๋ค์ ๋ถ๋ ํํ๋ก ์ธ์๋๋๋ฐ, ์ด๊ฑฐ๋ ํญ์ nullable ํ์
์ผ๋ก ์ธ์งํ๊ณ ์ฒ๋ฆฌํด์ค์ผ ํ๋ค.
์ฝํ๋ฆฐ์์ ํ๋ซํผ ํ์
์ ์ง์ ์ฌ์ฉํ๋๊ฑด ๋ถ๊ฐ๋ฅํ๋ค.