๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java(33)
-
[JAVA] String Instance / Constant Pool์ด๋?
๐ String Instance JAVA์์ String ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง๊ฐ ์กด์ฌํ๋ ๊ฒ์ด์์. ์ฒซ๋ฒ์งธ๋ String literal, ์ฆ ํฐ ๋ฐ์ดํ(" ")๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๊ณ , ๋๋ฒ์งธ๋ new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด์์. ๊ทธ๋ผ ์ด ๋ ์น๊ตฌ๋ ์ด๋ค ์ฐจ์ด๊ฐ ์์๊น์? ์์ ์ฝ๋ String literal๋ก ์์ฑํ ๊ฐ์ฒด๋ ๋ด์ฉ์ด ๊ฐ๋ค๋ฉด ๊ฐ์ ๊ฐ์ฒด. ์ฆ, ๋์ผ Memory Address๋ฅผ ๊ฐ๋ฅดํค๊ณ ์๋ ๊ฒ์ด์์. ํ์ง๋ง, New ์ฐ์ฐ์๋ก ์์ฑํ String ๊ฐ์ฒด๋ ๋ด์ฉ. ์ฆ, ๊ฐ์ ๊ฐ์๋ ๊ฐ๋ณ์ ์ธ ๊ฐ์ฒด์ด๋ฉฐ, Memory Address๊ฐ ๋ค๋ฅธ ๊ฒ์ด์์. ๐ฝ JAVA String Pool ์ฃผ๋ํ๋์ ๊ตญ๋น ์ง์ ํ์์์ ๊ณต๋ถํ ๋, `new ์ฐ์ฐ์`๋ก String ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ๋ง๋ผ๊ณ ์ด์ผ๊ธฐ๋ฅผ ๋ค์ ..
2022.03.24 -
[JAVA] getDeclaredFields ํ์ฉํ์ฌ VO ๊ฐ์ฒด์ ํ๋ฒ์ ์ด์ฉํ๊ธฐ
๐ ๋ฆฌํ๋ ์ (Reflection) ์ฌ์ฉ ๋ฆฌํ๋ ์ ์ ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํด๋, ๊ทธ ํด๋์ค์ ๋ฉ์๋, ํ์ , ๋ณ์๋ค์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฐ API์ธ ๊ฒ์ด์์. ๊ทธ๋ ๋ค๋ฉด ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํ๋ค๋ผ๋ ์๋ฏธ๋ ๋ฌด์์ธ ๊ฒ์ผ๊น์? ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํ๋ฉด ๊ทธ ํด๋์ค์ ๋ฉ์๋, ํ์ , ๋ณ์๋ค์ ์ ๊ทผํ ์ ์๋ ๊ฒ ์ผ๊น์? ์์ ์ฌ์ง๊ณผ ๊ฐ์ด VO๋ฅผ ๋ชจ๋ Class์ ์กฐ์ Class์ธ Object๋ก ๋ด์ ์๋ ์์ง๋ง, ์ฐ๋ฆฌ๊ฐ ์ด์ฉํ ์ ์๋ Class๋ Object๊ฐ ์ ๊ณตํ๋ Class ๋ฐ์ ์๋ ๊ฒ์ด์์. ์ด ๋ด์ฉ์ Java์ ๋คํ์ฑ๊ณผ ๊ด๋ จ์ด ๊น์ ๋ด์ฉ์ธ ๊ฒ์ด์์. ์ด๋ ๊ฒ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ Class๋ฅผ ์์ง ๋ชปํ๋ค๋ฉด Class์ Method์ ๋ณ์๋ฅผ ์ด์ฉํ ์ ์๋ ๊ฒ์ด์์..
2022.03.11 -
[Java] ๋คํ์ฑ(polymorphism)
๐ ๋คํ์ฑ์ด๋? ์์๊ณผ ํจ๊ป ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์ ์ค์ํ ํน์ง ์ค ํ๋์ธ ๋คํ์ฑ์ ์์๊ณผ ๊น์ ๊ด๊ณ๊ฐ ์๋ ๊ฒ์ด์์. ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์์ ๋คํ์ฑ์ด๋ '์ฌ๋ฌ ๊ฐ์ง ํํ๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ'์ ์๋ฏธํ๊ณ , ์๋ฐ์์๋ ํ ์๋ฃํ ํ์ ์ ์ฐธ์กฐ ๋ณ์๋ก ์ฌ๋ฌ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐธ๊ณ ํ ์ ์๋๋ก ํจ์ผ๋ก ๋คํ์ฑ์ ํฌ๋ก๊ทธ๋จ์ ์ผ๋ก ๊ตฌํํ ๊ฒ์ด์์. ์ฆ, ์กฐ์ Class ์๋ฃํ ํ์ ์ ์ฐธ์กฐ ๋ณ์๋ก ์์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํ์๋ค์ธ ๊ฒ์ด์์. Tv Class์ CaptionTv Class๊ฐ ์ด์ ๊ฐ์ด ์ ์๋์ด ์๋ค๊ณ ํ ๋, ๋ Class ๊ฐ์ ๊ด๊ณ ๊ทธ๋ฆผ์ ์๋์ ๊ฐ์ ๊ฒ์ด์์. Tv Class์ CaptionTv Class๋ ์๋ก ์์ ๊ด๊ณ์ ์๊ณ , ์ด ๋ Class์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋์ ..
2021.09.18 -
[JAVA] Class Method(static Method)์ ์ธ์คํด์ค Method
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. ์ค๋์ ์๋ฐ์ ๊ธฐ์ด ์ค ํ๋์ธ Static์ ๋ํด์ ์ ๋ฆฌ ํด ๋ณผ ๊ฒ์ด์์. ์ด ๋ด์ฉ์ ์๋ฐ์ ์ ์์ ์ฐธ๊ณ ํ์๋ต๋๋ค! ๐ ํด๋์ค ๋ฉ์๋(static ๋ฉ์๋)์ ์ธ์คํด์ค ๋ฉ์๋ ๋ฉ์๋ ์์ static์ด ๋ถ์ ๊ฒ์ด ์๋ค๋ฉด Class ๋ฉ์๋์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ธ์คํด์ค(๊ฐ์ฒด) ๋ฉ์๋์ธ ๊ฒ์ด์์. ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ๋ณ์์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋ 'ClassName.MethodName(๋งค๊ฐ ๋ณ์)' ํ์์ผ๋ก ํธ์ถ์ด ๊ฐ๋ฅํ ๊ฒ์ด์์. ํ์ง๋ง ์ธ์คํด์ค ๋ฉ์๋๋ ๋ฐ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ๋ง ํธ์ถํ ์ ์๋ ๊ฒ์ด์์. ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๊ฒฝ์ฐ์ static์ ์ฌ์ฉํ์ฌ ํด๋์ค ๋ฉ์๋๋ก ์ ์ํ๋ ๊ฒ์ผ๊น์? ํด๋์ค๋ 'Data(๋ณ์)์ Data์ ๊ด๋ จ๋ ๋ฉ์๋์ ์งํฉ'์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํด๋์ค ๋ด..
2021.09.13 -
[JAVA] Optional<T>
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค! ์ค๋์ Optional์ด๋ผ๋ ๊ธฐ๋ฅ์ ๋ํด์ ๊ณต๋ถ๋ฅผ ํ๋ฒ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค! ๐ Optional์ด๋? ๐ T Type ๊ฐ์ฒด์ ๋ํผํด๋์ค - Optional ๋ํผ ํด๋์ค์ ๋ํด ์ ๋ชจ๋ฅด์ ๋ค๋ฉด ๋ํผ ํด๋์ค ํผ๋์ ๊ด์ฌ์ ์ฃผ์ธ์! Public final class Optional{ private final T value;// T ์๋ฃํ ํ์ ์ ์ฐธ์กฐ ๋ณ์ Value ์ ์ธ .... } ์ฌ๊ธฐ์ T ํ์ ์ ๋ชจ๋ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์๊ณ , Null ๋ํ ์ ์ฅํ ์ ์๋ ๊ฒ์ด์์. ๐ Optional์ ์ฌ์ฉํ๋ ์ด์ ๐ Null์ ์ง์ ๋ค๋ฃจ๋ ๊ฒ์ ์ํํ๊ธฐ ๋๋ฌธ ๐ฌ Null์ ์ ๋ชป ๋ค๋ฃจ๊ฒ ๋๋ฉด Null Point Exception์ด ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด์์! ๊ทธ..
2021.06.23 -
[Java] Wrapper Class
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค! ์ค๋์ ์๋ฐ์ Wrapper Class์ ๋ํด ์์๋ณด๊ณ ์ถ์ ๊ฒ์ด์์! ์๋ฐ์ Optional์์ ํ์ํ ๊ฐ๋ ์ด๋ ๊ผญ ์์ง ํ์ จ์ผ๋ฉด ์ข๊ฒ ์ด์! ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค! ๐ ๋ํผํด๋์ค๋(Wrapper Class)? ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ด์์. ์๋ฅผ ๋ค์๋ฉด? Method์ ์ธ์๋ก ๊ฐ์ฒด ํ์ ๋ง์ด ์๊ตฌ๋๋ฉด, ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์๋ ์๋ ๊ฒ์ด์์. ์ด ๋์๋ ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๋จผ์ ๊ฐ์ฒด๋ก ๋ณํํ ๋ค ์์ ์ ์ํํด์ผ๊ฒ ์ง์? ์ด๋ ๊ฒ 8๊ฐ์ ๊ธฐ๋ณธ ํ์ ์ ํด๋นํ๋ Data๋ฅผ ๊ฐ์ฒด๋ก ํฌ์ฅํด ์ฃผ๋ ํด๋์ค๋ฅผ ๋ํผ ํด๋์ค๋ผ๊ณ ํ๋ต๋๋ค. ๋ํผ ํด๋์ค๋ ๊ฐ๊ฐ์ ํ์ ์ ํด๋นํ๋ Data๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์, ํด๋น ๊ฐ์ ๊ฐ์ง..
2021.06.22