-
์๊ฐ: Java์๋ ์ const(์์)๊ฐ ์์๊น?Java 2022. 3. 5. 19:12
๐ Java์๋ ์ const(์์)๊ฐ ์๋์?
์ฌ๋๋ค๊ณผ ์ด๋ค ์ฃผ์ ์ ๋ํด์ ์ด์ผ๊ธฐ๋ฅผ ํ๋ค๋ณด๋ฉด ์ ๊ธฐํ ํฌ์ธํธ๊ฐ ์๋ค. ์ด๋ ต์ง ์๊ณ , ์ฌ์ง์ด ์ต์ํ ์ฃผ์ ๋ผ์ ๋ค๋ค ์ ์๊ณ ์ฌ์ฉํ๊ฒ ๊ฑฐ๋ ์ถ์๋๋ฐ, ์๊ณ ๋ณด๋ฉด ์ ๊ฐ๊ธฐ ๋ค๋ฅด๊ฒ ์๊ฐํ๋ฉด์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ๋ค ๋ง์ด๋ค. ์ค๋ ์ด์ผ๊ธฐ ํ ์ฃผ์ ๊ฐ ๋ฐ๋ก ๊ทธ๋ฐ ๋ด์ฉ์ด๋ค.
๐ ๋ด์ฉ์ด ๋๋ฌด ๊ธธ์ด์, ์ธ ์ค ์์ฝ
- Java์์ ์์๊ฐ ํ์ํ๋ค๋ฉด
static final
ํค์๋๋ฅผ ์ด๋ค. (๋์ ์final
์์ดstatic
๋ง ์ฐ๋ ๊ฑด ์ง์ํ์) - ์ํฉ์ ๋ฐ๋ผ
static final
์final
๋ก ๋์ฒดํ์ฌ ํด๋น ํด๋์ค ๋ด๋ถ ํน์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ๊ณณ์์๋ง ์์์ฒ๋ผ ์ธ ์ ์๋ ์ํฉ๋ ์๋ค. ํ์ง๋ง ๊ทธ๋๋final
์ ์์๊ฐ ์๋๊ณ , ์์์ฒ๋ผ ์ฐ๊ณ ์๋ ๊ฒ์ด๋ค. static final
๋ก ๋ง๋ ์์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์์const
๊ฐ๋ ๊ณผ๋ ๊ฐ๋ ์ ์ผ๋ก๋, ๋ฌผ๋ฆฌ์ ์ผ๋ก๋, ๋๋ก๋ ๋ฌธ๋ฒ์ ์ผ๋ก๋ ๋ค๋ฅด๋ค. ํ์ง๋ง ๊ทธ๋๋final
์ ๋นํ์๋ฉด ๋งค์ฐ ์์๋ต๋ค.
์ด์ ์ด์ ๊ฐ ๊ถ๊ธํ ์ฌ๋๋ง ์๋ ๋ด์ฉ์ ์ฝ์ด๋ณด๋๋ก ํ์.
โ๏ธ
final
๋ง ์จ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ฐ ์static
๊น์ง ๋ถ์ด์ผ ์์์ธ๊ฐ์?์ด์ ์ ๋ , ๊ฐ๋ฐ์ปค๋ฎค๋ํฐ์์ ํ ๋ถ์ด Java์ ๋ํ ์ง๋ฌธ์ ์ฌ๋ ค์ฃผ์ จ๋ค.
final
๋ง ์จ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ฐ ์final
๋ง ๋ถ์ผ๋ฉด ์์๊ฐ ์๋๊ณstatic
๊น์ง ๋ถ์ด์ผ ์์์ธ๊ฐ์?
์ด๋ค ์ฑ ์์๋final
๋ ์์๋ผ๊ณ ํ๋๋ฐ ์ค์ ๋ก๋ ๋ง์ ์ฌ๋๋ค์ด ์์๋ฅผ ์ธ ๋static final
๋ก ์ฐ๋ ๊ฒ ๊ฐ์์. ์ด์ ๊ฐ ๋ญ๊น์?๋๋
final
๊ณผstatic
์ ์ฌ์ฉ๋ฒ ์ ๋๋ ์ ์๊ณ ์๋ค๊ณ ์๊ฐํ๊ณ (๊ฑด๋ฐฉ์ง๊ฒ๋) ์ฌ์ด ์ง๋ฌธ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง, ๋ต์ ํ๋ ค๋๊น ๋ญ๊ฐ ๊ป๋ฆ์นํจ์ด ์์๋ค.
๋๋ฆ๋๋ก์ ๋ต๋ณ์ ์ ์๋ค ์ง์ ๋ค ๋ฐ๋ณตํ๊ณ ์๋๋ฐ ๋ค๋ฅธ ๋ถ๋ค์ ๋ต๋ณ์ด ๋น ๋ฅด๊ฒ ๋ฌ๋ฆฌ๊ธฐ ์์ํ๋ค.
๋ต๋ณ์ ํฌ๊ฒ ์ธ๊ฐ์ง ํ๋ก ๋๋์๋ค.๋จผ์ '
final
๋ง์ผ๋ก๋ ์์๋ค'ํ.- ํ๋ก๊ทธ๋จ ์์์ ๋ณ๊ฒฝํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ผ๊ณ ์ ์ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์
final
๋ง์ผ๋ก๋ ์์๋ผ๊ณ ํ ์ ์์ ๊ฒ ๊ฐ๋ค. - ์์(Primitive) ํ์
๋ณ์๋ฅผ
final
๋ก ์ด๊ธฐํํ๋ฉด, ๋์ด์ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ๊ทธ๋ฌ๋ผ๊ณfinal
์ด ์กด์ฌํ๋ ๊ฒ์ด๋ค. - 'ใด' ๊ฐ์ฌ๋์ Java ๊ฐ์์์๋
final
๋ก ์ ์๋ ๋ณ์๋ฅผ ์์๋ผ๊ณ ํ์ ๋ค. (์ ๋ง ๊ทธ๋ฐ์ง ํ์ธํด๋ณด์ง๋ ๋ชปํ์)
๊ทธ ๋ค์ '
static final
์ด ์์๋ค'ํ.final
๋ณ์๋ ์์ฑ์์์ ๊ฐ์ ์ด๊ธฐํ ํ ์ ์๋ค. ์ธ์คํด์ค๋ง๋ค ๋ค๋ฅธ ๊ฐ์ ๊ฐ๋ ๋ณ์๋ฅผ ์์๋ผ๊ณ ํ ์๋ ์๋ค.- ์ฌํ ๋น์ด ์๋๋ ๊ฒ์ด์ง ๊ฐ์ฒด ์์ฒด์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ ์๋๋ค.
- ์ ์ธ๊ณผ ์ด๊ธฐํ ์์ ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค๋ฉด ์์๋ผ๊ณ ํ ์ ์์ง ์์๊น?
์ด์ฐ ๋ณด๋ฉด ๋ค ๋น์ทํ ๋ง ๊ฐ์ง๋ง ๋ค๋ฅธ ์ด์ผ๊ธฐ๋ค์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ด์จ๋ ๋ง์ง๋ง์ 'Java์๋ ์์๊ฐ ์๋ค'ํ๋ค.- Java๋ ๊ณต์์ ์ผ๋ก ์์๋ฅผ ์ง์ํ์ง๋ ์์ ๊ฑฐ๋ค. ์์ ๋น์ทํ๊ฒ ์ด๋ค๊ณ ํ๋ ๊ฒ ๋ง๋ ๊ฒ.
- ์ปดํ์ผ ํ์ ์์, ๋ฐํ์ ์์ ์ ๋๋ก ๋๋ ์ ๋ณผ ์ ์๊ฒ ์ง. ํ์ง๋ง ์ฝ๊ธฐ ์ ์ฉ ๋ณ์๋ผ๋ ํํ์ด ๋ ์ ํฉํ๋ค๊ณ ์๊ฐํ๋ค.
๋ค์ด๋ณด๋ฉด ๋ค ์ผ๋ฆฌ๊ฐ ์์ผ๋ฉด์ ๋ญ๊ฐ ์์ฐ์น ์์ ๋ถ๋ถ์ด ์์๋ค(?). ์ด์จ๋ ๋น์์ ๋๋ ์ด๋ ๊ฒ ์ ๋ฆฌํ๋ค.
- ์์ํ์
์
final
์ด ๋ถ์ผ๋ฉด ์์ - ๊ฐ์ฒด๊ฐ
final
์ธ ๊ฒฝ์ฐ, Immutableํ๋ค๋ฉด ์์, ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ณด์ฅํ ์ ์๋ค. - ๊ฐ์ฒด์ ํ๋๊ฐ
final
์ธ ๊ฒฝ์ฐ์๋ ์์์ง๋ง ์ธ์คํด์ค ๋ก๋ ์ ์ด๊ธฐํ๋๊ณ ,static final
์ธ ๊ฒฝ์ฐ์๋ ์์์ง๋ง ํด๋์ค ๋ก๋ ์ ์ ์ ์ด๊ธฐํ ๋๋ค.
๋๋ ์ ์ ๋ฆฌํ๋ ๊ฑธ๊น? ๋๋ฆ๋๋ก ์ทจํฉํ ๋ด์ฉ์ด๊ธด ํ๋ค.
๊ทธ๋์ ์ณ์ ๋ด์ฉ์ธ๊ฐ ํ๋ฉด, ํ๋ง๋๋ก ์์ ์๋ง์ธ ์ ๋ฆฌ๋ค.๐ค ์์๊ฐ ๋ญ๋ฐ์
์ ๋ชจ๋ ์๊ฒฌ์ด ์ผ๋ฆฌ๊ฐ ์์ผ๋ฉด์๋ ์์ถฉ๋๋ ๊ฒ์ผ๊น?
ํ๋ฃป๋ฐค ์๊ณ ์์นจ์ ์ผ์ด๋ ๋ค์ ์๊ฐํด๋ณด๋, '์์๋ ๊ณ ์ ๋ ๊ฐ์ด๋ค'๋ผ๋ ์์์ ๋ํ์ ์ธ ํน์ฑ ์ธ์๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์ ์๋ฅผ ๊ฐ๊ณ ์์๋ ๊ฒ ๊ฐ๋ค.๋จผ์ '
final
๋ง์ผ๋ก๋ ์์๋ค'ํ์ ๋ ผ๋ฆฌ๋ '์์๋ ์คํ ์ค์ ํ๋ก๊ทธ๋จ์ ์ํด ๋ณ๊ฒฝ๋์ง ์๋ ๊ฐ'์ด๋ผ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ํต์ฉ๋๋ ์์์ ์ ์์ ์์งํ๊ณ ์๋ค. ์ ์ด์ Java๋ผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์์ ์ด๋ค์ง๋ฅผ ๋ฌผ์ ๊ฒ์ด๋ ์ ๊ทผ์ด ์๋ชป๋ ๊ฒ๋ ์๋๋ค.
ํ์ง๋ง ์์ ์๊ฒฌ๋ค์์๋ ํฌ๊ฒ ๋ ๊ฐ์ง ํ๊ณ๋ฅผ ๋๋๋ค.- '์์'๋ฅผ ๋งํ ๋ ํญ์ 'ํ๋ก๊ทธ๋๋ฐ์์์ ์์'๋ง์ ๋งํ๋ ๊ฒ๋ง์ ์๋๊ธฐ ๋๋ฌธ์ ์คํด์ ์ฌ์ง๊ฐ ์๋ค(์ค์ ์ ๋์๋์ด์ผ ํ๋ ๊ฐ์ฒด์งํฅ์ ํน์ฑ ๋๋ฌธ์ ๋์ฑ).
- ๋ํ 'ํ๋ก๊ทธ๋๋ฐ์์์ ์์'๋ ๋จ์ํ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ฟ๋ง ์๋๋ผ ํ๋ก๊ทธ๋จ ์์ ์งํ๋ถํฐ ๋๋ ๋๊น์ง ๋์ผํ ๊ฐ์ผ๋ก ์กด์ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์
final
๋ง์ผ๋ก๋ ์์๋ผ ํ ์ ์๋ค. ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ์ฌ๋๋ค ๊ฐ์ ๊ท์น์ ๋ฐ๋ผ ์์์ฒ๋ผ ์ฌ์ฉํ ์ ์๋, ๋ณ์๋ค.
'
static final
์ด ์์๋ค'ํ์ ๋ ผ๋ฆฌ๋ ์ข ๋ ํฐ ๋ฒ์์ ์ ์์ ๊ธฐ์ธํ๋ ๊ฒ ๊ฐ๋ค. ์ฆ '์ํ์ ์์'๋ '๋ฌผ๋ฆฌ์ ์์'์ ์ ์์ ์์งํ๋ ๊ฒ์ด๋ค. ์์ ์๊ฒฌ์ ๋ฑ์ฅํ๋ ์์ฃผ์จ์ฒ๋ผ ๋ง์ด๋ค. ์ด ์ ์์์ ์์๋ ํต์ฉ์ฑ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค๋ ํน์ง์ ๊ฐ๊ธฐ ๋๋ฌธ์, ๋จ์ํ ๋ช๋ช ๊ฐ์ฒด ์ฌ์ด์์ ๊ณ ์ ๋ ๊ฐ์ ์ ์งํ๋ค๊ณ ํด์ ์์๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑธ ์ฉ๋ฉํ์ง ๋ชปํ ์ ์๋ค.
ํ์ง๋ง ๊ทธ๊ฒ๋ง ๊ฐ์ง๊ณ ์๋ ๋ ์ค๋ช ์ ํ๊ณ๊ฐ ์๋ค.static final
๋ก ํด์ผํ๋ ์ด์ ๋ฅผ ์ค๋ช ํ์ง๋ ๋ชปํ๋ค. ๊ทธ๋ฐ ์ด์ ์์๋ผ๋ฉด Java๋const
๋ฅผ ์ง์ํด์ผ์ง, ์ ์ง์ํ์ง ์๋๊ฑด๊ฐ?- ๊ฐ์ฒด ์์ ์์ฑ์์์
final
๋ณ์๋ฅผ ์ด๊ธฐํํ๋ฉด์ "์ด๊ฑด ์์์ผ"๋ผ๊ณ ๋งํ๋ ํ๋ก๊ทธ๋๋จธ๋ ์๋ค(์๊ธธ ๋ฐ๋๋ค). ๊ทธ๋ฌํ ์์ ๋ฅผ ์น ์์์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ ๊ฑดfinal
ํ๋๋ฅผ ์ธ์คํด์คํ ํ๋ ์์ ์ ์ด๊ธฐํํ๋ ๊ฑธ ๋ณด์ฌ์ฃผ๋ ค๋ ๋ชฉ์ ์ธ ๊ฑฐ์ง,final
์ด ์์๊ฐ ์๋๋ ๊ฑธ ์ฆ๋ช ํ๊ธฐ ์ํด์๊ฐ ์๋๋ค. - ๊ทธ๋ผ ์์ฑ์์์ ์ด๊ธฐํ ํ์ง ์๊ณ
final
ํ๋์ ๋ฆฌํฐ๋ด๋ก ๊ฐ์ ์ด๊ธฐํํ๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด, ๊ทธ ๊ฐ์ฒด์ ํ๋๋ ์์๊ฐ ๋๋? - ์ธํฐํ์ด์ค๋? ์ธํฐํ์ด์ค์ ํ๋๋ ๋ชจ๋
static final
์ด์ง๋ง(์ ํํ๋public static final
) ์ ์ ์์ญ์์ ์ด๊ธฐํ๋์ง ์๊ณ ์ ์ธ ์ ์ด๊ธฐํ๋๋ค.
์คํฌ๋ฅผ ํ์๋ฉด, ์ฌ์ค 'Java์๋ ์์๊ฐ ์๋ค'ํ๊ฐ ๋ง๋ ๋ง์ด๋ค. Java๋
const
๋ฅผ ์ง์ํ์ง ์์ผ๋๊น. ๊ตฌ๊ธ๋ง ํ๋ค๋ณด๋ ์์ด๋ฌธ์(์ด์ ๊ดํ ํ๊ตญ์ด์น์ ์์ ๋ชป์ฐพ์๋ค) ์ค์๋ ์ด๋ฐ๊ฒ ์ค๋ช ๋ ์์๋ค: 'Java์๋ const๊ฐ ํ์์์ด์ ๊ตฌํ๋์ง ์์ ๊ฒ์ด๋ค'.
ํ์ง๋ง ์ญ์, ์ด๋ฐ ์ค๋ช ๋ง ๊ฐ์ง๊ณ ์๋ ๋๋ ์ค๋ช ์ ํ๊ณ๊ฐ ์๋ค.- '์๋ ~~ํ ๊ฑฐ์ผ'๋ผ๋ ๋ง ๋งํผ ๋งฅ๋น ์ง๊ณ ์ค๋๋ ฅ ์๋ ๋ง์ ์๋ค.
- '์ฝ๊ธฐ ์ ์ฉ ๋ณ์'๋ผ๋ ํํ๋ ์ข์ง๋ ์์ ๊ฒ์ด, ์์์ ์ ์ ์ค ํ๋๊ฐ '์ฝ๊ธฐ ์ ์ฉ ๋ณ์'๋ค.
- ๊ทธ๋ ๋ค๋ฉด Java์ Math.PI๋ ์์์ธ๊ฐ ์๋๊ฐ?
๐ค ์์ ์ด์ ๊ทธ๋ง ๋๊ณ , ์ ๋ฆฌํ์
- ๋ด์ฉ์ ์ฝ์๋ค๋ฉด ๋ด๊ฐ ์ด์ ํ ๋ง๋ ์ดํดํด์ฃผ์ค ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค. ์ด ๊ธ์ ์๋ฉ ๋ฃจํธ๋ 'ํฉํฌ์ ์น' ๋ฃจํธ๋ค.
Java
๋const
๋ฅผ ์ง์ํ์ง ์๋๋ค. ํ์ง๋ง ๋น์ฐํ๊ฒ๋ ์์ ๊ฐ๋ ์ด ์กด์ฌํ์ง ์๋๊ฑด ์๋๋ค. ์ด๋ฏธ ๊ทธ๋ ๊ฒ๋ค ์ฐ๊ณ ์๊ณ ๋ง์ด๋ค.- '์ฒ์๋ถํฐ ๋๊น์ง, ์ด๋ค ๊ฐ์ ๊ทธ๋ฅ ๋น์ฐํ ๊ฐ๊ฒ ๋๋'
const
๋ ์์ฝ์ด๋ฅผ ๊ฐ์ฒด์งํฅ์ ์ง์ด๋ฃ๊ธฐ์๋ ๊ต์ฅํ ๋๊ฐํ๋ค๋ ๊ฒ์ ๋๊ฐ์ ํ์ ๊ฐ๋ฐ์ ์ง๋ง์๋ ์ ์ ์๋ ์ฌ์ค์ด๋ค. ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์ ๊ณ ๋ คํด๋ ๊ทธ๋ ๊ณ (์ํ์ ์ผ๋ก๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก๋ , ๊ฐ์ฒด์ ์ข ์๋์ง ์์ ์ด๋ค ๊ฐ์ด๋ ๊ฑด ์กด์ฌํ ์ ์๋ค), ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ๊ฒ ํ์ง ์๋ Java์ ์ธ์ด์ ํน์ฑ์ ๊ณ ๋ คํด๋ ๊ทธ๋ ๋ค(์ ๊ทผ๋ ๋ชปํ๋๋ฐ ์ ์ ๋ฅผ?). - ํ์ง๋ง
static final
์ด๋ผ๋ฉด ํด๋์ค ์์ค์ ๋ณ์๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์๊ณ , ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋ฉฐ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ ์์๋ก ํ์ฉํ ์ ์๋ค. ๋ค๋ง interface์ ์๋ฅผ ๊ณ ๋ คํ์ ๋, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(์๋ฅผ ๋ค์ดC
)์์ ์ ๊ณตํ๋ ์์ ๊ฐ๋ ๊ณผ๋ ๋ค๋ฅด๋ค๋ ๊ฑด ์ธ์งํ ์ ์์ด์ผ ํ๋ค. - ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ค๋ฉด
final
๋ ์ผ๋ง๋ ์ง ์์์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. ์์๊ฐ ํ์ํ ๋final
๋ง์ ์ฌ์ฉํ๊ธธ ๊ณ ๋ คํด๋ณผ ์๋ ์๋ค(๋คstatic
์ผ๋ก ์ ์ํ๋ฉด ์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๊ฐ ์งํค๋). ํ์ง๋ง ์ํ์์์ ์ ์๋ก๋, ๋ฌผ๋ฆฌ์ ์ธ ์ ์๋ก๋, ์ฌ์ง์ด ํ๋ก๊ทธ๋๋ฐ์์์ ์ ์๋ก๋ '์์'์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๋ ๊ฒ์ ์ธ์งํ๊ณ ์ฌ์ฉํด์ผ ํ๋ค.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java: Arrays.fill()๊ณผ Arrays.setAll()์ ์ฐจ์ด (1) 2022.07.12 Java: ์ค๋ฅError์ ์์ธException, Unchecked์ Checked (0) 2022.06.17 Java: Integer.parseInt()์ Integer.valueOf()์ ์ฐจ์ด์ ๊ตฌ๋ถ (2) 2022.06.06 Java: Comparable(compareTo())์ Comparator(compare())์ ์ฐจ์ด์ (0) 2022.05.17 Java: String[] split(regex, limit) ์ฌ์ฉ ์์ (0) 2022.05.17 ํ ์คํธ ์ ์๋ฌ: org.junit.platform.launcher.core.EngineDiscoveryOrchestrator... (0) 2022.03.02 - Java์์ ์์๊ฐ ํ์ํ๋ค๋ฉด