๐ก ์๋ฐ์ ํน์ง์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์๋ฐ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค.
๊ธฐ๋ณธ ์๋ฃํ์ ์ ์ธํ ๋ชจ๋ ์์๋ค์ด ๊ฐ์ฒด๋ก ํํ๋๊ณ , ๊ฐ์ฒด ์งํฅ ๊ฐ๋ ์ ํน์ง์ธ ์ถ์ํ, ์บก์ํ, ์์์ฑ, ๋คํ์ฑ์ด ์ ์ฉ๋ ์ธ์ด์ ๋๋ค.
์๋ฐ์ ์ฅ์ ์ผ๋ก๋,
- JVM(์๋ฐ ๊ฐ์๋จธ์ ) ์์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ ๋๋ค.
- GarbageCollector๋ฅผ ํตํ ์๋์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์๋ฐ์ ๋จ์ ์ผ๋ก๋,
- JVM(์๋ฐ ๊ฐ์๋จธ์ ) ์์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์คํ ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆฝ๋๋ค.
- ๋ค์ค ์์์ด๋ ํ์ ์ ์๊ฒฉํ๋ฉฐ, ์ ์ฝ์ด ๋ง์ต๋๋ค.
๐ก ์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํฌ๊ฒ Method ์์ญ, Stack ์์ญ, Heap ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๊ณ , ๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋ผ ํ ๋น๋ฉ๋๋ค.
Method ์์ญ
- ์ ์ญ ๋ณ์์ static ๋ณ์๋ฅผ ์ ์ฅํ๋ฉฐ, Method ์์ญ์ ํ๋ก๊ทธ๋จ ์์๋ถํฐ ์ข ๋ฃ๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ๋จ์์๋ค.
Stack ์์ญ
- ์ง์ญ๋ณ์์ ๋งค๊ฐ๋ณ์ ๋ฐ์ดํฐ๊ฐ์ด ์ ์ฅ๋๋ ๊ณต๊ฐ์ด๋ฉฐ, ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋, ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋ค.
- LIFO(Last In First Out) ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ๋ณ์์ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ํ ๋น๋๋ฉด ์ด์ ๋ฐ์ดํฐ๋ ์ง์์ง๋ค.
Heap ์์ญ
- new ํค์๋๋ก ์์ฑ๋๋ ๊ฐ์ฒด(์ธ์คํด์ค), ๋ฐฐ์ด ๋ฑ์ด Heap ์์ญ์ ์ ์ฅ๋๋ฉฐ, ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ด๋ฆฌ๋๋ค.
๐ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OPP)์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์ฐ๋ฆฌ๊ฐ ์ค์ํ์์ ์ฐ๋ ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด๋ผ๊ณ ํ๋๋ฐ,
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ๊ตฌํ์ ํ์ํ ๊ฐ์ฒด๋ฅผ ํ์ ํ๊ณ ์ ์ํ์ฌ ๊ฐ์ฒด๋ค ๊ฐ์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ ๋ปํฉ๋๋ค.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง์ธ ์ถ์ํ, ์บก์ํ, ์์์ฑ, ๋คํ์ฑ์ผ๋ก ์ธํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ฉฐ ์ ๋ขฐ์ฑ ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๐ ์ถ์ํ, ์บก์ํ, ์์์ฑ, ๋คํ์ฑ
- ์ถ์ํ : ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฒด๋ค์ ๊ณตํต๋ ์์ฑ์ด๋ ๊ธฐ๋ฅ๋ค์ ์ถ์ํํด์ ์ ์ํ๋ ๊ฒ
- ์บก์ํ : ๊ฐ์ฒด์ ์์ฑ๊ณผ ํ์๋ฅผ ํ๋๋ก ๋ฌถ๊ณ , ๊ตฌํ ๋ด์ฉ์ ์ธ๋ถ๋ก๋ถํฐ ๊ฐ์ถ๋ ๊ฒ
- ํด๋์ค๋ก ํ๋๋ก ๋ฌถ๊ณ , ๋ด๋ถ์ ์ ๊ทผ ์ ์ด์๋ฅผ ๋์ด ์ธ๋ถ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด ๊ฐ์ถ๋ ๊ฒ์ ์์๋ก ๋ค ์ ์์
- ์์์ฑ : ๋ถ๋ชจ ํด๋์ค์ ํน์ฑ์ ์์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
- ๋คํ์ฑ : ์ฌ๋ฌ ๊ฐ์ง ํน์ฑ์ ๊ฐ์ง ์ ์๋ ๊ฒ
- ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ
๐ ๊ฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด ?
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์ค๊ณ๋์ ๋๋ค. ์ด ํด๋์ค๋ฅผ ์ฐธ์กฐํ์ฌ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์์ฑํฉ๋๋ค.
๐ก ์ค๋ฒ๋ก๋ฉ(Overloading)๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ(Overriding)์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์ค๋ฒ๋ก๋ฉ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ ํ์ ์ ๋ค๋ฅด๊ฒ ํ์ฌ, ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์์) print()
์ค๋ฒ๋ผ์ด๋ฉ์ ์์ ํด๋์ค์ ์๋ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค์์ ์ฌ์ ์ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์์) toString()
๐ก ์ ์บ์คํ ๊ณผ ๋ค์ด์บ์คํ ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์
์บ์คํ
๊ณผ ๋ค์ด ์บ์คํ
์ ์๋ก ์์ ๊ด๊ณ์ ์๋ ํด๋์ค์์ ๋ํ๋๋ฉฐ,
์
์บ์คํ
์ ์์ ํด๋์ค ํ์
์ ์ฐธ์กฐ ๋ณ์์์ ์กฐ์ ํด๋์ค ํ์
์ ์ฐธ์กฐ ๋ณ์๋ก ํ ๋ณํ
๋ค์ด ์บ์คํ
์ ์กฐ์ ํด๋์ค ํ์
์ ์ฐธ์กฐ ๋ณ์์์ ์์ ํด๋์ค ํ์
์ ์ฐธ์กฐ ๋ณ์๋ก ํ ๋ณํํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
๐ก String, StringBuilder, StringBuffer ์ฐจ์ด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
String์ ๋ถ๋ณ ๊ฐ์ฒด๋ก, heap๊ณผ ์์ํ์ ์ ์ฅ๋ฉ๋๋ค.
StringBuilder์ StringBuffer๋ heap์ ์ ์ฅ๋๊ณ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ์ง๋ง,
StringBuffer์ ๊ฒฝ์ฐ Thread-safe ํ๊ณ StringBuffer์ ๊ฒฝ์ฐ Thread-safe ํ์ง ์์ต๋๋ค.
Thread-safe : ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ๋ค๋ ์๋ฏธ์ด๋ค.
๐ก ๊ฐ์ฒด ์งํฅ์ ์ค๊ณ์์น์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
- SRP(๋จ์ผ ์ฑ ์ ์์น) : ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- OCP(๊ฐ๋ฐฉ-ํ์ ์์น) : ํ์ฅ์๋ ์ด๋ ค์๊ณ , ์์ ์๋ ๋ซํ์์ด์ผ ํ๋ค.
- LSP(๋ฆฌ์ค ์ฝํ ์นํ ์์น) : ํ์ ํ์ ์ ํญ์ ์์ ํ์ ์ ๋์ฒดํ ์ ์์ด์ผ ํ๋ค.
- ISP(์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น) : ์ธํฐํ์ด์ค๊ฐ ๋จ์ผ ์ฑ ์์ ๊ฐ์กฐํ๋ค. ํ๋์ ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค๋ณด๋ค ์ฌ๋ฌ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค๊ฐ ๋ซ๋ค.
- DIP(์์กด ๊ด๊ณ ์ญ์ ์์น) : ๊ณ ์์ค ๋ชจ๋์ด ์ ์์ค ๋ชจ๋์ ๊ตฌํ์ ์์กดํด์๋ ์ ๋๋ค. ์ธํฐํ์ด์ค, ์ถ์ ํด๋์ค์ ๊ฐ์ด ๋ณํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ์ด์ผ ํ๋ค.
๐ก ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์ถ์ ํด๋์ค๋ ํด๋์ค ๋ด ์ถ์ ๋ฉ์๋๊ฐ ํ๋ ์ด์ ํฌํจ๋๊ฑฐ๋ abstract๋ก ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๊ณ ,
์ธํฐํ์ด์ค๋ ๋ชจ๋ ๋ฉ์๋๊ฐ ์ถ์ ๋ฉ์๋๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ ๊ฒ์ ๋งํฉ๋๋ค. (์๋ฐ 8๋ถํฐ static, default ๋ฉ์๋ ํฌํจ ๊ฐ๋ฅ)
์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๊ณตํต์ ์ผ๋ก๋,
- new ์ฐ์ฐ์๋ก ์ธ์คํด์ค ์์ฑ ๋ถ๊ฐ๋ฅ
- ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ์ ํด๋์ค์์ ํ์ฅ/๊ตฌํํด์ผ ํ๋ค.
์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ฐจ์ด์ ์ผ๋ก๋,
- ์ถ์ ํด๋์ค๋ ์์๋ฐ๋ ํด๋์ค๋ค์ ๊ณตํต์ ์ธ ๋ก์ง์ ์ถ์ํ์ํค๊ณ , ๊ธฐ๋ฅ ํ์ฅ์ ์ํด ์ฌ์ฉํ๋ค. (extends)
- ์ธํฐํ์ด์ค๋ ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ชจ๋ ํด๋์ค์ ๋ํด ํน์ ํ ๋ฉ์๋๊ฐ ๋ฐ๋์ ์กด์ฌํ๋๋ก ๊ฐ์ ํ๋ค. (implements)
- ์ธํฐํ์ด์ค๋ ๋ค์ค ์์์ด ๊ฐ๋ฅํ์ง๋ง, ์ถ์ ํด๋์ค๋ ๋ค์ค ์์์ด ๋ถ๊ฐ๋ฅํ๋ค.
๐ก ๋ฆฌํ๋ ์ ์ด๋ ๋ฌด์์ธ์ง ์ค๋ช ํด ์ฃผ์ธ์.
๋ฆฌํ๋ ์ (Reflection)์ด๋ ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํด๋, ๊ทธ ํด๋์ค์ ๋ฉ์๋, ํ์ , ๋ณ์๋ค์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฐ API์ ๋๋ค.
๐ ๋ฆฌํ๋ ์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
IntelliJ์ ์๋์์ฑ ๊ธฐ๋ฅ, ์คํ๋ง์ ์ด๋ ธํ ์ด์ ์ด ๋ฆฌํ๋ ์ ์ ์ด์ฉํ ๊ธฐ๋ฅ์ ๋๋ค.
๐ก ๊ฐ๋ณ ๊ฐ์ฒด์ ๋ถ๋ณ ๊ฐ์ฒด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๊ฐ๋ณ ๊ฐ์ฒด๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ์ดํ์๋ ๊ทธ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋งํ๊ณ ,
๋ถ๋ณ ๊ฐ์ฒด๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ์ดํ์๋ ๊ทธ ์ํ๋ฅผ ์ ๋๋ก ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋งํฉ๋๋ค.
๊ฐ๋ณ ๊ฐ์ฒด์ ๋ํ์ ์ธ ์์๋ก๋ ArrayList, HashMap, StringBuilder, StringBuffer ๋ฑ์ด ์กด์ฌํ๊ณ ,
๋ถ๋ณ ๊ฐ์ฒด์ ๋ํ์ ์ธ ์์๋ก๋ String, Wrapper ํด๋์ค๊ฐ ์์ต๋๋ค.
์๋ฐ์์ ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ํ๋๊ฐ ์์ ํ์ ์ธ ๊ฒฝ์ฐ final ํค์๋๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค ์ ์์ต๋๋ค.
๐ Wrapper Class์ Boxing๊ณผ UnBoxing ?
- ๊ธฐ๋ณธ ์๋ฃํ(Primitive data type)์ ๋ํ ๊ฐ์ฒด ํํ์ Wrapper Class๋ผ๊ณ ํ๋ค.
- ๊ธฐ๋ณธ ์๋ฃํ โก Wrapper Class๋ก ๋ณํํ๋ ๊ฒ์ Boxing์ด๋ผ ํ๋ฉฐ,
- Wrapper Class โก ๊ธฐ๋ณธ ์๋ฃํ์ผ๋ก ๋ณํํ๋ ๊ฒ์ UnBoxing์ด๋ผ ํ๋ค.
๐ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๊ฐ๋น์ง ์ปฌ๋ ์ ์ JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ ์ค ํ๋๋ก,
์์คํ ์์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค์์ ํ์ ์์ด์ง ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํด ์ฃผ๋ ๊ธฐ๋ฒ์ ๋๋ค.
๐ JVM
JVM ์ด๋ Java Virtual Machine์ ์ค์๋ง๋ก, OS์ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ด๋ฅผ ์ค์ฌํด ์ฃผ๋ ๊ฐ์๋จธ์ ์ ๋๋ค.
์คํ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, Java Byte Code๋ฅผ OS์ ๋ง๊ฒ ํด์ํด ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํตํด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํด์ค๋๋ค.
๐ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๊ณผ์ ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
GC์ ์์ ์ ์ํํ๊ธฐ ์ํด JVM์ด ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ ์ ๋ฉ์ถ๊ณ , GC๋ฅผ ์คํํ๋ ์ค๋ ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ์ค๋ ๋๋ค์ ์์ ์ ์ค๋จ ํ(Stop The World ๊ณผ์ ) ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฑฐ(Mark and Sweep ๊ณผ์ ) ํ๊ณ ์์ ์ด ์ฌ๊ฐ๋ฉ๋๋ค.
GC ์์ ์ Young ์์ญ์ ๋ํ Minor GC์ Old ์์ญ์ ๋ํ Major GC๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
๐ก try-with-resources์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
try-with-resources๋ try-catch-finally์ ๋ฌธ์ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ๊ฐ๋ ์ ๋๋ค.
try() ์์ ์์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ฉด, try ๋ธ๋ก์ด ๋๋๊ณ ์๋์ผ๋ก ์์ ํด์ ํด ์ฃผ๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
๋ฐ๋ก finally ๊ตฌ๋ฌธ์ด๋ ๋ชจ๋ catch ๊ตฌ๋ฌธ์ ์ข ๋ฃ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์๋ ๋๋ ์ฅ์ ์ด ์์ต๋๋ค.
๐ก C++๊ณผ ์๋ฐ์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
c++๊ณผ ์๋ฐ, ๋ ์ธ์ด ๋ชจ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ณ , ๋ ์ธ์ด ๋ชจ๋ ์ ์ํ, ์ค์ํ, ๋ฌธ์ํ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ์ง์ํฉ๋๋ค.
๋๋ถ๋ถ์ ์ ์ด ๊ตฌ์กฐ(์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋ฑ)๊ฐ ๋์ผํ๊ฒ ์ฌ์ฉ๋๋ฉฐ, try-catch-finally ๋ธ๋ก์ ์ฌ์ฉํด ์์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ ์ธ์ด์ ์ฐจ์ด์ ์ผ๋ก๋,
์๋ฐ
- ํ๋ซํผ์ ๋ ๋ฆฝ์
- ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํตํ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๊ณต
- ํด๋์ค ๊ฐ์ ๋ค์ค ์์์ ์ง์ํ์ง ์์
C++
- ํ๋ซํผ์ ์ข ์์
- ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ํด๋์ค ๊ฐ์ ๋ค์ค ์์์ ์ง์
๐ก new String()๊ณผ ๋ฆฌํฐ๋ด("")์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
new String()์ new ํค์๋๋ก ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ Heap ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅ๋๊ณ ,
new String()๋ก ์์ฑ๋ ๋ ๊ฐ์ฒด๋ ๋ด์ฉ์ด ๊ฐ๋๋ผ๋ ์ฃผ์๊ฐ์ด ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ก ์ทจ๊ธ๋ฉ๋๋ค.
""๋ Heap ์์ ์๋ ์์ ํ(String Pool) ์์ญ์ ์ ์ฅ๋๊ณ ,
๋์ผํ ๋ฆฌํฐ๋ด์ด ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ๋๋๋ผ๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
๐ Java์์, ==์ equals์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ ?
'==' ์ฐ์ฐ์ ์ฐธ์กฐ(์ฃผ์) ๋น๊ต๋ก, ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ๋ฆฌํค๋์ง๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์ ๋๋ค.
'equals' ์ฐ์ฐ์ ๋ ๊ฐ์ฒด์ ๋ด๋ถ ๊ฐ์ด ๊ฐ์์ง ๋ด์ฉ์ ๋น๊ตํฉ๋๋ค.
๊ธฐ๋ณธ ํ์ ์ ๋ํด์๋ ์ฌ์ฉํ ์ ์๊ณ , ๊ฐ์ฒด ๋น๊ต ์ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ์ํ๋ ๋ฐฉ์์ผ๋ก ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
๐ก ์๋ฐ์ ์ ๋ค๋ฆญ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์ ๋ค๋ฆญ ํ์ ์ ๋ค์ํ ํ์ ์ ๊ฐ์ฒด๋ค์ ๋ค๋ฃฐ ์ ์๋๋ก ๋์์ฃผ๋ ํ์ ๋งค๊ฐ ๋ณ์์ ๋๋ค.
ํด๋์ค๋ ์ธํฐํ์ด์ค, ๋ฉ์๋์ ์ ๋ค๋ฆญ ํ์ ์ ์ฌ์ฉํจ์ผ๋ก์จ, ํ์ ์ฒดํฌ์ ํ ๋ณํ์ ์๋ต์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ
์๋ชป๋ ํ์ ์ฌ์ฉ์ผ๋ก ์ธํ ๋ฐํ์ ์ค๋ฅ๋ฅผ ์ปดํ์ผ ๊ณผ์ ์์ ๋ฏธ๋ฆฌ ์ ์ ์๊ฒ ํด์ค๋๋ค.
๐ก ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ด ํ๋ฆ์ ๊ด๋ฆฌํ๋ฉฐ, ๊ฐ๋ฐ์๋ ํ๋ ์์ํฌ์์ ์ ์ํ ๊ท์น์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
ํ๋ ์์ํฌ๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋์ ํ๋ฆ์ ํธ์ถํฉ๋๋ค.
ex) ์คํ๋ง ํ๋ ์์ํฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์งํฉ์ ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณตํต์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํ์ง ์๊ณ , ์ด๋ฏธ ๊ตฌํ๋ ์ฝ๋(ํจ์, ํด๋์ค ๋ฑ)๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฆ์ ๊ด๋ฆฌํ๋ฉฐ, ๋จ์ง ๊ธฐ๋ฅ๋ง์ ์ ๊ณตํ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ ํ๋ฆ์ด๋ ๊ตฌ์กฐ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
ex) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (JDBC, Hibernate, JPA)
๐ก ์์๊ณผ ๊ตฌํ์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
์์์ ์์ ํด๋์ค์ ํน์ฑ์ ์ฌ์ฌ์ฉํ๊ณ , ์ด๋ฅผ ํ์ฅํ์ฌ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ตฌํ์ ํด๋์ค๊ฐ ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ์ ์ํ์ฌ, ์ธํฐํ์ด์ค์์ ์ ์ธํ ๋์์ ๊ตฌ์ฒด์ ์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ก final์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
final ํค์๋๋ ํด๋์ค, ๋ฉ์๋, ๋ณ์๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋๋ก ๋ง๋ญ๋๋ค.
๐ final ํค์๋๋ฅผ ํด๋์ค, ๋ฉ์๋, ๊ธฐ๋ณธ ํ์ ๋ณ์, ์ฐธ์กฐ ๋ณ์์ ๊ฐ๊ฐ ๋ถ์ธ๋ค๋ฉด ?
- ํด๋์ค์ ์ ์ฉ ์ ํด๋น ํด๋์ค๋ฅผ ์์๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฉ์๋์ ์ ์ฉ ์ ํด๋น ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํ ์ ์๋ค. (์ค๋ฒ๋ก๋ฉ์ ๊ฐ๋ฅํจ)
- ๊ธฐ๋ณธ ํ์ ๋ณ์์ ์ ์ฉ ์ ํด๋น ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ฐธ์กฐ ๋ณ์์ ์ ์ฉ ์ ์ฐธ์กฐ ๋ณ์๊ฐ ํ ๋ด์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
๐ก checkedException๊ณผ uncheckedException์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
checkedException์ ์คํํ๊ธฐ ์ (์ปดํ์ผ ์์ ) ์์ธก ๊ฐ๋ฅํ ์์ธ๋ฅผ ๋งํ๊ณ , ๋ฐ๋์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํฉ๋๋ค.
ex) Exception - IOException, ClassNotFoundException ๋ฑ
UncheckedException์ ์คํํ๊ณ ๋ ํ์ ์ ์ ์๋ ์์ธ๋ฅผ ๋งํ๊ณ , ๋ฐ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์๋ ๋ฉ๋๋ค.
ex) Exception - NullPointerException, ArrayIndexOutOfBoundException ๋ฑ
RuntimeException์ UncheckedException์ ์์ํ ํด๋์ค์ด๊ณ ,
RuntimeException์ด ์๋ ๊ฒ์ checkedException์ ์์ํ ํด๋์ค์ ๋๋ค.
'Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring & Spring Boot (0) | 2024.08.15 |
---|