Made by. ๊น๋ฏผ์ง ๋ฐํ๋น ์ด์ฐ์ฃผ ํฉ์ฑํ
๐ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ์์ค.
๐ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด์ ๋ํด ์ค๋ช ํ์์ค.
- ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐ์ดํฐ ์ค์ฌ์ ํจ์๋ฅผ ๊ตฌํํ๋ฉฐ ํ๋ก๊ทธ๋จ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ์ ๋๋ค. ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ฝ๋์ ์์๊ฐ ๋ฐ๋๋ฉด ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ด๋ ต์ต๋๋ค.
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ฅ ์ค์ฌ์ผ๋ก ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ํ๋๋ก ๋ฌถ์ด์ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฝ๋์ ์ฌํ์ฉ์ฑ์ด ๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ค๊ณํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
- ์บก์ํ, ์์, ์ถ์ํ, ๋คํ์ฑ 4๊ฐ์ง ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์บก์ํ๋ ์ฐ๊ด ์๋ ๋ณ์์ ํจ์๋ฅผ ํด๋์ค๋ก ๋ฌถ๋ ์์ ์ ์๋ฏธํฉ๋๋ค.
- ์์์ ์์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ํน์ฑ๊ณผ ๊ธฐ๋ฅ์ ๋ฌผ๋ ค๋ฐ์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ์ญํ ์ ํฉ๋๋ค.
- ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ก ๊ณตํต์ ์ธ ํน์ฑ๋ค์ ๋ฌถ์ด ํํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ๋คํ์ฑ์ ๋ํ์ ์ธ ํน์ง์ผ๋ก๋ ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ์ด ์์ต๋๋ค.
- SRP(๋จ์ผ ์ฑ ์ ์์น), OCP(๊ฐ๋ฐฉ-ํ์ ์์น), LSP(๋ฆฌ์ค์ฝํ ์นํ ์์น), DIP(์์กด ์ญ์ ์์น), ISP(์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)์ ๋งํ๋ฉฐ, ์์๋ฅผ ๋ฐ์ SOILD ์์น์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐ์ด ์ง๋๋ ์ ์ง ๋ณด์์ ํ์ฅ์ด ์ฌ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋๋๋ฐ ์ด ์์น๋ค์ ์ ์ฉํ ์ ์์ต๋๋ค.
- SRP( Single Responsibility Principle ), ๋จ์ผ ์ฑ
์ ์์น
- ๊ฐ์ฒด๋ ๋จ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค๋ ์์น์ ๋งํฉ๋๋ค.
- ์์คํ ์ ๋ณํ๊ฐ ์๊ธฐ๋๋ผ๋ ์ํฅ์ ์ต์ํ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
- OCP ( Open-Closed Principle ), ๊ฐ๋ฐฉ-ํ์ ์์น
- ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์, ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๊ฐ ๋์ด์ผ ํ๋ค๋ ์์น์ ๋งํฉ๋๋ค.
- ํ์ฅ์ ๋ํด์๋ ๊ฐ๋ฐฉ์ ์ด๊ณ ์์ ์ ๋ํด์๋ ํ์์ ์ผ๋ก ์ค๊ณํด์ผ ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
- L (LSP : Liskovโs Substitution Principle)
- ์์ ํด๋์ค๋ ์ต์ํ ์์ ์ ๋ถ๋ชจ ํด๋์ค์์ ๊ฐ๋ฅํ ํ์๋ ์ํํ ์ ์์ด์ผ ํ๋ค๋ ์ค๊ณ ์์น์ ๋๋ค.
- I (ISP : Interface Segregation Principle)
- ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ๋ง์์ผ ํ๋ค๋ ์ค๊ณ ์์น์ ๋๋ค.
- D (DIP : ependency Inversion Principle)
- ๊ฐ์ฒด๋ค์ด ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์์กด ๊ด๊ณ๊ฐ ํ์ฑ๋๋๋ฐ, ์ด ๋ ๊ฐ์ฒด๋ค์ ๋๋ฆ๋๋ก์ ์์น์ ๊ฐ๊ณ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ๋ค๋ ์ค๊ณ ์์น์ ๋๋ค.
- SRP( Single Responsibility Principle ), ๋จ์ผ ์ฑ
์ ์์น
- ์ค๋ฒ๋ก๋ฉ์ ๋ฉ์๋์ ์ด๋ฆ์ ๊ฐ๊ณ , ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ ํ์ ์ด ๋ค๋ฅธ ํจ์๋ฅผ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ค๋ฒ๋ผ์ด๋ฉ์ ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค์์ ์ฌ์ ์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ํด๋์ค๋ โ์ค๊ณ๋โ, ๊ฐ์ฒด๋ โ์ค๊ณ๋๋ก ๊ตฌํํ ๋ชจ๋ ๋์โ์ ์๋ฏธํฉ๋๋ค.
- ํด๋์ค์ ํ์ ์ผ๋ก ์ ์ธ๋์์ ๋ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฅด๊ณ , ๊ทธ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ์ค์ ์ฌ์ฉ๋ ๋ ์ธ์คํด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์๋ฐ๋ ๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ฉฐ ํ๋ซํผ ๋ ๋ฆฝ์ฑ, ๋ฉํฐ์ฐ๋ ๋, ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฑ ๋ค์ํ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- Java SE๋ Java Platform Standard Edition์ ์ฝ์๋ก ๋ฐ์คํฌํฑ, ์๋ฒ, ์๋ฒ ๋๋๋ฅผ ์ํ ํ์ค ์๋ฐ ํ๋ซํผ์ ๋งํฉ๋๋ค.
- Java EE๋ Java Platform EnterPrise Edition์ ์ฝ์๋ก ์๋ฐ๋ฅผ ์ด์ฉํ ์๋ฒ์ธก ๊ฐ๋ฐ์ ์ํ ํ๋ซํผ์ ๋๋ค. SE์ ์๋ฒ์ธก์ ์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ SE์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ด์ฉ ํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธํ ๋ณ์์๋ ์ค์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ฉ๋๋ค.
- byte, short, int, long, float, double, boolean, char ์ด ์์ผ๋ฉฐ ์คํ์ ์ ์ฅ๋ฉ๋๋ค.
- ์ฐธ์กฐํ ๋ณ์์๋ ์ค์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋ด์ ์ฃผ์๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค.
- ๋ก์ปฌ ๋ณ์๋ ๋ฉ์๋ ๋ด์์ ์ ์ธ๋ ์์น๋ถํฐ ์์๋ ์ค๊ดํธ๊ฐ ๋๋๋ ์ง์ ๊น์ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ธ์คํด์ค ๋ณ์๋ ํด๋์ค๋ฅผ ํตํด ์์ฑ๋ ์ธ์คํด์ค ๋ด์์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํด๋์ค ๋ณ์๋ ํด๋์ค์ ๋ชจ๋ ์ธ์คํด์ค์์ ๊ณต์ ํ๋ ๋ณ์๋ก์ ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ static ์์ญ์ ์์ฑ๋ฉ๋๋ค.
- 8๊ฐ์ ๊ธฐ๋ณธ ํ์ ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ํฌ์ฅํด์ฃผ๋ ํด๋์ค
- Wrapper ํด๋์ค๋ฅผ ์ด์ฉํ ๋ ์ฃผ์ํ ์ ์ ์ฐธ์กฐํ๋ผ๋ฆฌ ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ์๋ฃํ์ผ๋ก ๋ณํํ์ฌ ์ฐ์ฐํด์ผ ํ๋ค.
- Public ์ ๊ทผ ์ ์ด์๋ ๊ฐ์ ํจํค์ง ์์ ํด๋์ค๋ฟ ์๋๋ผ, ๋ค๋ฅธ ํจํค์ง ์์ ํด๋์ค์์๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- Private ์ ๊ทผ ์ ์ด์๋ ์ค๋ก์ง ๊ทธ ํด๋์ค์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฐธ์กฐ ํ์
์ ๊ฐ์ "Wrapper" ํด๋์ค๋ก ๋ฐ๊ฟ์ฃผ๋๊ฒ์ด ๋ฐ์ฑ์ด๋ผ๊ณ ํ๊ณ , ๋ฐ๋๋ก "Wrapper" ํด๋์ค ํ์
์ ๊ฐ์ ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์
์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ์ธ๋ฐ์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
- ์๋ฐ 1.5 ์ดํ ๋ถํฐ Auto Boxing/ Auto Unboxing์ผ๋ก ๋ช ์์ ์ผ๋ก ์์ํ์ ์ ์ฐธ์กฐํ์ ์ผ๋ก ๋ณํ์์ผ์ฃผ์ง ์์๋ ์๋์ผ๋ก Boxing / Unboxingํ๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์์ธ์ผ ๋ ์ ์๋ค.
- static ๋ฉค๋ฒ๋ ํด๋์ค ๋น ํ๋๋ง ์์ฑ๋๊ณ non-static ๋ฉค๋ฒ๋ ๊ฐ์ฒด๋ง๋ค ๋ณ๋๋ก ์กด์ฌํฉ๋๋ค.
- static ๋ฉค๋ฒ๋ ๋์ผํ ํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ์ํด ๊ณต์ ๋๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ด๋ค ํจํค์ง์ ์๋ main ๋ฉ์๋๋ JVM์ ์ํด์ ๊ฐ์ฅ ๋จผ์ ์คํ๋์ผ ํ๋ฏ๋ก public์ ์ฌ์ฉํฉ๋๋ค.
- ์คํ ์ main ๋ฉ์๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์์ด์ผ ํ๋ฏ๋ก static์ผ๋ก ์ ์ธ๋์ด ์์ด์ผ ํฉ๋๋ค.
- ๋ณ์, ๋ฉ์๋, ํด๋์ค์ ์ฌ์ฉ ํ ์ ์์ผ๋ฉฐ ๋ณ์์ ์ฌ์ฉ ์ ๊ฐ์ด ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๊ณ ๋ฉ์๋์ ์ฌ์ฉ ์ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ชปํ๊ฒ ๋ง๋ค๋ฉฐ ํด๋์ค์ ์ฌ์ฉํ ์์ ์์์ ํ ์ ์๊ฒ ๋ง๋๋ ์ฉ๋์ ๋๋ค.
- ๊ฐ์ฒด ํ์ ์ ์ปดํ์ผ ์์ ์ฒดํฌํด์ฃผ๋ ๊ฒ์ ๋๋ค.
- ์ปดํ์ผ ์์ ํ์ ์ ์ฒดํฌํ๋ฏ๋ก ํ์ ์์ ์ฑ์ ๋์ด๊ณ ํ๋ณํ์ ๋ฒ๊ฑฐ๋ก์์ ์ค์ผ ์ ์์ต๋๋ค.
- ๋๋ฑ์ฐ์ฐ์(==)๋ ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ๋ฆฌํค๋์ง ํ์ธ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- equals()๋ ๋ ๊ฐ์ฒด์ ๊ฐ์ด ๊ฐ์์ง๋ฅผ ํ์ธํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ ๋๋ค.
-
call by reference ์ฃผ์๊ฐ์ ํธ์ถ
-
call by value ์ค์ ๊ฐ์ ํธ์ถ
-
๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๋ณต์ฌ๋ฅผ ํ์ฌ ์ฒ๋ฆฌ๋ฅผ ํ๋๋, ์๋๋ฉด ์ง์ ์ฐธ์กฐ๋ฅผ ํ๋๋ ์ฐจ์ด๋ฅผ ์๋ฏธํฉ๋๋ค.
-
Call by Value์ ๊ฒฝ์ฐ ์ธ์๋ก ๋ฐ์ ๊ฐ์ด ๋ณด์กด๋ฉ๋๋ค.
-
Call by reference๋ก ๋์ด์จ ๊ฐ์ฒด ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ํฅ์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
- ์ถ์ํด๋์ค์ ๋ชฉ์ ์ ๊ณตํต์ ์ ์ฐพ์ ์ถ์ํํ๋ ๊ฒ์ ๋๋ค.
- ์ธํฐํ์ด์ค์ ๋ชฉ์ ์ ๊ตฌํ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๋์ํ๋ ๊ฒ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค.
- ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํ ๋ ํ์ํ API ์
๋๋ค.
- ์ฆ, ์์ฑ ์์ ์๋ ์ด๋ค ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ, ๋ฐํ์ ์์ ์์ ํด๋์ค๋ฅผ ๊ฐ์ ธ์์ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค. ๋ํ์ ์ผ๋ก IntelliJ์ ์๋์์ฑ์ด๋ Spring ํ๋ ์์ํฌ์ ์ด๋ ธํ ์ด์ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ด ๋ฆฌํ๋ ์ ์ ์ด์ฉํด์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋์ ์ผ๋ก ํด๋์ค ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ ์์ด๋ค.
์ฐธ๊ณ
- ์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๋ฌ ํ ์ ์๋๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค.
- ์ญ์ง๋ ฌํ๋ ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค.
- StringBuilder๋ ๋๊ธฐํ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ StringBuffer๋ณด๋ค ์๋๊ฐ ๋ ๋น ๋ฆ ๋๋ค.
- StringBuffer์ ์๋๋ ๋๋ฆฌ์ง๋ง ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- java.time ํจํค์ง์ ์คํธ๋ฆผ API, ๋๋ค ํํ์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- "์๋ณ์์์ด ์คํ๊ฐ๋ฅํ ํจ์" ํจ์์ธ๋ฐ ํจ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ง ์๊ณ ์ฝ๋ํ์ค์ ํจ์๋ฅผ ์จ์ ๊ทธ๊ฒ์ ํธ์ถํ๋ ๋ฐฉ์์ ๋๋ค. ์ฝ๋๋ฅผ ์ค์ฌ ๊ฐ๋จํ๊ฒ ์์ฑ ๊ฐ๋ฅํ๊ณ ๊ฐ๋ ์ฑ์ด ์ฆ๊ฐํฉ๋๋ค.
- Stream API๋ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ
๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถ
ํฉ๋๋ค.
List<Integer> list = new ArrayList<>();
long count = list.stream().filter(x -> x>3).count(); // 3๋ณด๋ค ํฐ ์๋ง countํ์ฌ ๊ฐ ์ถ์ถ
- ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ ํ์์์ด ํ ์์ญ์์ ๋์ด์ ์ฌ์ฉ๋์ง ์์ ๊ฐ์ฒด๋ค(์ฐ๋ ๊ธฐ ๊ฐ์ฒด) ๋ฅผ ์ฐพ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํด์ฃผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ง์ญ๋ณ์๋ scope๊ฐ ๋๋๊ฑฐ๋ ๋ณ์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฝ์ ํ๋ฉด ์ด๊ธฐํ๋ฉ๋๋ค.
- ์ ์ญ๋ณ์์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์ด๊ธฐํ๋ฉ๋๋ค.
-
- ์ฒ์ ์์ฑ๋ ๊ฐ์ฒด๋ Eden์ ์์น
- Minor GC ๋ฐ์ ํ์ ์ด์์๋ค๋ฉด Survivor ์์ญ์ผ๋ก ์ด๋
- Survivor์์ ์ด์๋จ์ ๊ฐ์ฒด๋ Old Generation ์์ญ์ผ๋ก ์ด๋
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(Java bytecode)๋ ์๋ฐ ๊ฐ์ ๋จธ์ ์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ณํ๋ ์๋ฐ ์์ค ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค. (ex).class ํ์ผ)
-
[๋ณต๊ตฌํ] Try/Catch ๋ธ๋ก
- ์์ธ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์๋ ์ฝ๋๋ฅผ try๋ฌธ์ผ๋ก ๊ฐ์ธ๊ณ , ๋ฐ์ ์์ ์ฒ๋ฆฌ๋ catch์์ ๋ฐ์์ ํ๋ค. ์ฆ, ํธ๋ผ์ด ์บ์น ๋ธ๋ก์ ์ฌ์ฉํ๋ฉด ํด๋น ๋ฉ์๋์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
- try
withresource: try์ ์์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ฉด, try ์ฝ๋ ๋ธ๋ก์ด ๋๋๋ฉด ์๋์ผ๋ก ์์์ ์ข ๋ฃํด์ฃผ๋ ๊ธฐ๋ฅ
-
[ํํผํ] throw ํค์๋ ์ ์ธ
- ๋ฉ์๋ ๋๋จ์ throws Exception ์ ์ ์ธํ์ฌ ์ฒ๋ฆฌํ๋ค. ์์ธ ๋ฐ์ ์, ๋ฉ์๋๋ฅผ ํธ์ถํ ์ฝ๋๋ก ์์ธ๋ฅผ ๋๋๋ ค ๋ณด๋ด์ ์ฒ๋ฆฌํ๊ฒ ํ๋ ๋ฐฉ์์ด๋ค.
-
[์ ํํ] catch์์ ๋ค๋ฅธ ์์ธ๋ฅผ ๋์ง๋ ๊ฒ
- ํธ์ถ ์ธก์์ ์๋ฌ์ ํ์ ์ ๋ช ํํ๊ฒ ์ธ์งํ ์ ์๋๋ก ์์ธ๋ฅผ ๋์ ธ์ฃผ๋ ๊ฒ์ด๋ค.
-
ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ ์ฒซ์งธ๋ก ์์ค์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ปดํ์ผ์ด๋ผ๋ ๊ณผ์ ์ ํตํด ๊ธฐ๊ณ์ด์ฝ๋๋ก ๋ณํ ๋์ด ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ด ๋๋ฉฐ, ์ด๋ฌํ ํธ์ง ๊ณผ์ ์ ์ปดํ์ผํ์(Compiletime) ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
-
์ปดํ์ผ๊ณผ์ ์ ๋ง์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์์ ์ํด ์คํ๋์ด ์ง๋ฉฐ, ์ด๋ฌํ ์์ฉํ๋ก๊ทธ๋จ์ด ๋์๋์ด์ง๋ ๋๋ฅผ ๋ฐํ์(Runtime)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
-
์ปดํ์ผํ์ ์ค๋ฅ์ ์ ํ
- ์ ํ์ค ์ค๋ฅ
- ํ์ ์ฒดํฌ ์ค๋ฅ
-
๋ฐํ์ ์ค๋ฅ์ ์ ํ
- 0๋๋๊ธฐ ์ค๋ฅ
- ๋(Null)์ฐธ์กฐ ์ค๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ค๋ฅ
- ๊ฐ๋ฐ์๊ฐ ์๋ฐ ์์ค์ฝ๋(.java)๋ฅผ ์์ฑํ๋ค.
- ์ปดํ์ผ๋ฌ์ ์ํด ์์คํ์ผ๋ฅผ ๋ฐ์ดํธ์ฝ๋(.class)๋ก ์ปดํ์ผํ๋ค.
- ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด๋์ค ๋ก๋์๊ฒ ์ ๋ฌํ๋ค.
- ํด๋์ค๋ก๋์ ์ํด importํ ํด๋์ค ์ฝํ๋ค.
- ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ ์ํด JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ค.
- ์คํ์์ง์ JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํ๋์ ๊ฐ์ ธ์ ์คํํ๋ค. (Java ์ปดํ์ผ๋ฌ ์ฌ์ฉ)
- Runnable ์ธํฐํ์ด๋ฅผ ํ์ฅํด run() ๋ฉ์๋ ๊ตฌํ
- Thread ํด๋์ค๋ฅผ ์์๋ฐ๊ณ run() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด ๊ตฌํ
-
์ปฌ๋ ์ ํ๋ ์์ํฌ(collection framework)๋ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ํด๋์ค์ ์งํฉ์ ์๋ฏธํฉ๋๋ค.
-
Collection ์ธํฐํ์ด์ค
- List ์ธํฐํ์ด์ค๋ ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก, ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํฉ๋๋ค.
- ArrayList, LinkedList
-
Map ์ธํฐํ์ด์ค
- ํค์ ๊ฐ ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๋ฐ์ดํฐ ์งํฉ์ผ๋ก, ํค ๊ฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ต๋๋ค.
- HashMap, TreeMap
-
ArrayList๋ ๋ฐ์ดํฐ๋ค์ด ์์๋๋ก ์ญ ๋์ด์ ๋ฐฐ์ด์ ํ์์ ์ทจํ๊ณ ์๋ ๋ฐ๋ฉด LinkedList๋ ์์๋๋ก ๋์ด์ ๊ฒ์ด ์๋๋ผ ์๋ฃ์ ์ฃผ์ ๊ฐ์ผ๋ก ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๊ตฌ์กฐ์ ๋๋ค.
-
ArrayList
- ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด๋ก ๊ด๋ฆฌํ๊ณ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ์ ์์ ๋ฐฐ์ด์ ์์ฑํด ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ณ ์ธ๋ฑ์ค๊ฐ ์์ด ๊ฒ์์๋ ์ ๋ฆฌํฉ๋๋ค.
- ์์ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ์ ๊ฒฝ์ฐ์๋ ๋ถ๋ฆฌํฉ๋๋ค.
-
LinkedList
- ๋ด๋ถ์ ์ผ๋ก ๋ ธ๋ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์์ ์ ์ ๋ค ๋ ธ๋๋ง ์ธ์งํ๋ ์ํ์ ๋๋ค.
- ์ธ๋ฑ์ค๊ฐ ๋ฐ๋ก ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ ์ ๋ ธ๋๋ฅผ ์ํํด์ผํ์ฌ ๊ฒ์์ ๋ถ๋ฆฌํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ์ ๋ถํ์ํ ๋ฐ์ดํฐ ๋ณต์ฌ๊ฐ ์์ด ์ ๋ฆฌํฉ๋๋ค.
๊ตฌ๋ถ | Checked Exception | Unchecked Exception |
---|---|---|
ํ์ธ์์ | ์ปดํ์ผ ์์ | ๋ฐํ์ ์์ |
์ฒ๋ฆฌ์ฌ๋ถ | ๋ฐ๋์ ์์ธ ์ฒ๋ฆฌํด์ผํ๋ค. | ๋ช ์์ ์ผ๋ก ํ์ง ์์๋ ๋๋ค. |
ํธ๋์ญ์ ์ฒ๋ฆฌ | ์์ธ ๋ฐ์ ์ ๋กค๋ฐฑํ์ง ์์ | ์์ธ ๋ฐ์์ ๋กค๋ฐฑ |
- synchronized ํจ์(๋ฉ์๋)๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํฉ๋๋ค.
- synchronized ๋ธ๋ก(block) ์ฌ์ฉํฉ๋๋ค.
- ์๋์ผ๋ก ์์์ ํด์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- try์์ ์ ์ธ๋ ๊ฐ์ฒด๊ฐ AutoCloseable์ ๊ตฌํํ์๋ค๋ฉด Java๋ try๊ตฌ๋ฌธ์ด ์ข ๋ฃ๋ ๋ ๊ฐ์ฒด์ close() ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ํธ์ถํฉ๋๋ค.
- Functional Interface๋ ์ ํํ ํ๋์ ์ถ์ ๋ฉ์๋๊ฐ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์๋ก๋ Predicate, Comparator, Runnable ์ธํฐํ์ด์ค๋ฑ์ด ์กด์ฌํฉ๋๋ค.
- ๋๋ค ํํ์ ์ง์ ์์ฑํ๋ ๋์ ํด ๊ธฐ์กด์ ๋ฉ์๋ ์ ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ธฐ์กด์ ๋ฉ์๋์ ์ ์์ ๋์ผํ ๋๋ค ํํ์์ ๋งค๋ฒ ์์ฑํ๋ ๋ถํธํจ์์ ๋์จ ๊ธฐ๋ฒ์ด๋ฉฐ, ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
interface Executable {
void doSomething(String text);
}
public static class Printer {
static void printSomething(String text) {
System.out.println(text);
}
}
public static void main(String args[]) {
Executable exe = text -> Printer.printSomething(text);//๋๋ค ํํ์
Executable exe2 = Printer::printSomething; // ๋ฉ์๋ ๋ ํผ๋ฐ์ค
exe.doSomething("do something");
exe2.doSomething("do something");
}
- ๋ฉ์๋ ๊ตฌํ์ ํฌํจํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋์ด์ง๋๋ค. ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ ์ธํฐํ์ด์ค์ ๋ํดํธ ๋ฉ์๋๋ ์์๋ฐ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์๋ธํด๋์ค๋ ์ต์ํ์ ๋ฉ์๋๋ง ๊ตฌํํด๋ ๋ฉ๋๋ค. ์ฆ, ์ธํฐํ์ด์ค๋ ์๋ธํด๋์ค๊ฐ ๊ตฌํํด์ผ ํ๋ ์ต์ํ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
interface MyInterface {
default void printHello() {
System.out.println("Hello World");
}
}
- Optional ํด๋์ค๋ NullPointerException๋ฅผ ๊ด๋ฆฌ ํ๊ธฐ ์ํด ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๊ฐ์ผ Wrapper Class ์ ๋๋ค. Optional ์ธ์คํด์ค๋ ๋ชจ๋ ํ์ ์ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
Optional<String> opt = Optional.ofNullable("Optional ๊ฐ์ฒด");
if(opt.isPresent()) {
System.out.println(opt.get());
}
- ์๋ธ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ํผ ํด๋์ค ํ์ ์ผ๋ก ํ๋ณํ๋๋ ๊ณผ์ ์ ์ ์บ์คํ ์ด๋ผ ํฉ๋๋ค.
- ์ ์บ์คํ ๋ ๋ณ์์ ํ์ ์ ์๋ธ ํด๋์ค๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ค์ด ์บ์คํ ์ด๋ผ ํฉ๋๋ค.
- ํด๋์ค์ ์์ฑ๊ณผ ์์ฑ์/๋ฉ์๋์ ๋งค๊ฐ๋ณ์(input parameter)์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ
- ํด๋์ค์ ์ค๋ฒ๋ก๋ฉ๋ ๋ค๋ฅธ ์์ฑ์ ํธ์ถ
class Hello{
String kor;
int age;
public Hello(String kor) {
this.kor = kor;
}
public Hello(String kor, int age)
this(kor); //์๋์ผ๋ก ํด๋น ํ๋ผ๋ฏธํฐ์ ์ ํฉํ ์์ ์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
this.age = age;
}
}