๐ป [Java] Java์ ๋ณ์ - ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ, ๋ํผ ํด๋์ค
๐ป [Java] Java์ ๋ณ์ - ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ, ๋ํผ ํด๋์ค
์๋
ํ์ธ์. ๐
์ค๋์ Java์ ๋ณ์ - ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ๋ณธํ ํ์ (Primitive Type)
- ์ด 8๊ฐ์ง์ ๊ธฐ๋ณธํ ํ์ (Primitive type)์ ๋ฏธ๋ฆฌ ์ ์ํ์ฌ ์ ๊ณตํ๋ค.
- ๊ธฐ๋ณธ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ Null์ด ์กด์ฌํ์ง ์๋๋ค. ๋ง์ฝ ๊ธฐ๋ณธํ ํ์ ์ null ๊ฐ์ ๋ฃ๊ณ ์ถ๋ค๋ฉด ๋ํผ ํด๋์ค๋ฅผ ํ์ฉํ๋ค.
- ์ค์ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค.
- ๋ง์ฝ ์ปดํ์ผ ์์ ์ ๋ด์ ์ ์๋ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํค๋ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์ฃผ๋ก ๋ฌธ๋ฒ์์ ์๋ฌ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์ด ;์ ์๋ถ์๋ค๋ ์ด์ ๋ก ๋นจ๊ฐ ์ค์ด ์ณ์ง๋ ๊ฒฝ์ฐ
์ฐธ์กฐํ ํ์ (Reference type)
- ๊ธฐ๋ณธํ ํ์ ์ ์ ์ธํ ํ์ ๋ค์ด ๋ชจ๋ ์ฐธ์กฐํ ํ์ (Reference type)์ด๋ค.
- ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๊ณณ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ค.
-
์ฃผ์๋ฅผ ์ง์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ null ๋ก ์ง์ ํ ์ ์๋ค.
ex) Date today; //์ฐธ์กฐํ ๋ณ์ today ์ ์ธ today = new Date(); // today์ ์์ฑ ๋ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ ์ฅ
Wrapper ํด๋์ค
- ๊ธฐ๋ณธํ ํ์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ๋ค์ ์ฐธ์กฐํ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- Wrapper ํด๋์ค๋ฅผ ์ด์ฉํ๋ฉด ์ฐธ์กฐํ ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ฏ๋ก ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ค.
Wraaper ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์์ ํ์ ์ null์ ๋ด์ ์ ์๋ค. ๋ฐ๋ฉด ์ฐธ์กฐ ํ์ ์ null์ ๊ฐ์ง ์ ์๋ค.
- ์์ ํ์ ์ ์ ๋ค๋ฆญ ํ์ ์์ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ฉด์ ์ฐธ์กฐ ํ์ ์ ์ ๋ค๋ฆญ ํ์ ์์ ์ฌ์ฉํ ์ ์๋ค.
์ฐธ์กฐํ ํ์ (Wrapper ํด๋์ค) vs ๊ธฐ๋ณธํ ํ์
๊ธฐ๋ณธํ ํ์ ์ null์ ๋ด์ ์๋ ์๊ณ ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ์ฌ์ฉ๋ ๋ถ๊ฐ๋ฅํ๋ฐ
๊ทธ๋ผ ์ ์ฐ๋ ๊ฒ์ผ๊น?
1.์ ๊ทผ ์๋
- ์์ ํ์ ์ โ์คํโ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ์กด์ฌํ๋ค.
- ๋ฐ๋ฉด์ ์ฐธ์กฐ ํ์
์ ํ๋์ ์ธ์คํด์ค์ด๊ธฐ ๋๋ฌธ์ โ์คํโ๋ฉ๋ชจ๋ฆฌ์๋ ์ฐธ์กฐ ๊ฐ(์ฃผ์)๋ง ์๊ณ , ์ค์ ๊ฐ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค.
- ๊ธฐ๋ณธํ์ ๊ฐ์ ๋ฐ๋ก ์ ๊ทผํ์ง๋ง ์ฐธ์กฐํ์ ์ฃผ์ ๊ฐ์ ์ด์ฉํด ์ค์ ๊ฐ์ ์ ๊ทผํด์ผํจ
- ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ํ์๋ก ํ ๋๋ง๋ค ์ธ๋ฐ์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ ์์ ํ์
๊ณผ ๋น๊ตํด์ ์ ๊ทผ ์๋๊ฐ ๋๋ ค์ง๊ฒ ๋๋ค.
- ์์ธ์ ์ผ๋ก ์์ฒญ ํฐ ์ซ์๋ฅผ ๋ณต์ฌํด์ผ ํ๋ค๋ฉด, ์ฐธ์กฐ๊ฐ๋ง ๋๊ธธ ์ ์๋ ์ฐธ์กฐ ํ์ ์ด ์ข์ ์ ๋ ์๋ค.
2. ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ์
- ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ฐธ์กฐํ์ ์ด ํจ์ฌ ๋ง๋ค.
64๋นํธ ์ปดํจํฐ ๊ธฐ์ค ๋น๊ตํ
์ ๋ฆฌ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๋ฅ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ์ฅ์ ์ด ์๋ ์์ ํ์ ์ ๋จผ์ ๊ณ ๋ คํ๋ค.
- ๋ง์ฝ null์ ๋ค๋ค์ผ ํ๊ฑฐ๋, ์ ๋ค๋ฆญ ํ์ ์์ ์ฌ์ฉ๋์ด์ผ ํ๋ค๋ฉด ์ฐธ์กฐ ํ์ ์ ์ฌ์ฉํ๋ค.
๋
Java์ ๋ณ์ - ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ, ๋ํผ ํด๋์ค์ ๋ํด ์์๋ณด์์ต๋๋ค.
Reference
https://siyoon210.tistory.com/139
https://www.baeldung.com/java-primitives-vs-objects
https://stackoverflow.com/questions/2509025/when-to-use-primitive-and-when-reference-types-in-java
https://www.youtube.com/watch?v=xKj4N6eReQQ&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=16
Written on June 21, 2021