Skip to content

Files

Latest commit

 

History

History

04.Java

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Part 04.Java

Made by. ๊น€๋ฏผ์ง€ ๋ฐ•ํ˜œ๋นˆ ์ด์—ฐ์ฃผ ํ™ฉ์„ฑํ˜„

๐Ÿ’ก ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก ๊ฐ์ œ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ 5์›์น™์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก ์ž๋ฐ”์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก Java SE์™€ EE์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์™€ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ก ๋ณ€์ˆ˜์˜ 3๊ฐ€์ง€ ํƒ€์ž…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ก Wrapper Class์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก public ์ ‘๊ทผ ์ œ์–ด์ž์™€ private ์ ‘๊ทผ ์ œ์–ด์ž์˜ ์ฐจ์ด

๐Ÿ’ก Boxing, Unboxing์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก non-static ๋ฉค๋ฒ„์™€ static ๋ฉค๋ฒ„์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก main ๋ฉ”์†Œ๋“œ๊ฐ€ public static์ธ ์ด์œ ๋Š”?

๐Ÿ’ก Final ํ‚ค์›Œ๋“œ์˜ ์šฉ๋„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก Generic์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก ==๊ณผ equals()์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

๐Ÿ’ก Call by Reference์™€ Call by Value์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก java reflection์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก StringBuilder์™€ StringBuffer์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ก Java 8์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

๐Ÿ’ก Lambda๋ž€ ๋ฌด์—‡์ด๊ณ  ์–ด๋– ํ•œ ์žฅ์ ์ด ์žˆ๋Š”๊ฐ€?

๐Ÿ’ก Stream API ํŠน์ง•์ด๋‚˜ ์žฅ์ ์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

๐Ÿ’ก Garbage Collector(GC)๋ž€?

๐Ÿ’ก GC์— ์˜ํ•ด ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋Š” ์‹œ์ ์„ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ก JAVA์—์„œ ๋ฐ”์ดํŠธ์ฝ”๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

๐Ÿ’ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๐Ÿ’ก JAVA ๋™์ž‘ ์›๋ฆฌ

๐Ÿ’ก ์ž๋ฐ”์—์„œ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’ก Collection ์ •์˜์™€ ์ข…๋ฅ˜๋ฅผ ๋ง์”€ํ•ด์ฃผ์„ธ์š”

๐Ÿ’ก ArrayList์™€ LinkedList์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”

๐Ÿ’ก CheckedException๊ณผ UnCheckedException์˜ ์ฐจ์ด

๐Ÿ’ก Synchronized(๋™๊ธฐํ™”)๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”

๐Ÿ’ก try-with-resource๋ž€?

๐Ÿ’ก Functional Interface๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก Method Reference๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก Optional ํด๋ž˜์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ…์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’ก this ํ‚ค์›Œ๋“œ๋Š” ์–ธ์ œ ์‚ฌ์šฉ๋˜๋‚˜์š”?



Java ๋‹ต๋ณ€

โœ๏ธ : ์˜๋…ผ ์ค‘์ธ ๋ฏธ์™„์„ฑ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ

๐Ÿ’ก ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์ฝ”๋“œ์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ธฐ๋Šฅ ์ค‘์‹ฌ์œผ๋กœ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์„ฑ์ด ๋†’๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์„ค๊ณ„ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ’ก ๊ฐ์ œ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์บก์Šํ™”, ์ƒ์†, ์ถ”์ƒํ™”, ๋‹คํ˜•์„ฑ 4๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์บก์Šํ™”๋Š” ์—ฐ๊ด€ ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ํด๋ž˜์Šค๋กœ ๋ฌถ๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒ์†์€ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํŠน์„ฑ๊ณผ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›์•„ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ถ”์ƒํ™”๋ž€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ณตํ†ต์ ์ธ ํŠน์„ฑ๋“ค์„ ๋ฌถ์–ด ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹คํ˜•์„ฑ์˜ ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์œผ๋กœ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ, ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ 5์›์น™์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • 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)
      • ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์˜์กด ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๊ฐ์ฒด๋“ค์€ ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ์›์น™์„ ๊ฐ–๊ณ  ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•„์•ผ ํ•œ๋‹ค๋Š” ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์˜ค๋ฒ„๋กœ๋”ฉ์€ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์€ ๊ฐ™๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋‚˜ ํƒ€์ž…์ด ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ํด๋ž˜์Šค๋Š” โ€˜์„ค๊ณ„๋„โ€™, ๊ฐ์ฒด๋Š” โ€˜์„ค๊ณ„๋„๋กœ ๊ตฌํ˜„ํ•œ ๋ชจ๋“  ๋Œ€์ƒโ€™์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์„ ๋•Œ ๊ฐ์ฒด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๊ทธ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ์‹ค์ œ ์‚ฌ์šฉ๋  ๋•Œ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

Java

๐Ÿ’ก ์ž๋ฐ”์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋ฉฐ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ, ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Java SE์™€ EE์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • Java SE๋ž€ Java Platform Standard Edition์˜ ์•ฝ์ž๋กœ ๋ฐ์Šคํฌํ†ฑ, ์„œ๋ฒ„, ์ž„๋ฒ ๋””๋“œ๋ฅผ ์œ„ํ•œ ํ‘œ์ค€ ์ž๋ฐ” ํ”Œ๋žซํผ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • Java EE๋ž€ Java Platform EnterPrise Edition์˜ ์•ฝ์ž๋กœ ์ž๋ฐ”๋ฅผ ์ด์šฉํ•œ ์„œ๋ฒ„์ธก ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. SE์— ์„œ๋ฒ„์ธก์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ SE์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์™€ ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  • ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜์—๋Š” ์‹ค์ œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • byte, short, int, long, float, double, boolean, char ์ด ์žˆ์œผ๋ฉฐ ์Šคํƒ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์—๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋‹ด์€ ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๋ณ€์ˆ˜์˜ 3๊ฐ€์ง€ ํƒ€์ž…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  • ๋กœ์ปฌ ๋ณ€์ˆ˜๋Š” ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์„ ์–ธ๋œ ์œ„์น˜๋ถ€ํ„ฐ ์†Œ์†๋œ ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋๋‚˜๋Š” ์ง€์ ๊นŒ์ง€ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค ๋‚ด์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์—์„œ ๊ณต์œ ํ•˜๋Š” ๋ณ€์ˆ˜๋กœ์„œ ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ static ์˜์—ญ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Wrapper Class์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • 8๊ฐœ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ํฌ์žฅํ•ด์ฃผ๋Š” ํด๋ž˜์Šค
  • Wrapper ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ์ฐธ์กฐํ˜•๋ผ๋ฆฌ ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์—ฐ์‚ฐํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ’ก public ์ ‘๊ทผ ์ œ์–ด์ž์™€ private ์ ‘๊ทผ ์ œ์–ด์ž์˜ ์ฐจ์ด

  • Public ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ๊ฐ™์€ ํŒจํ‚ค์ง€ ์•ˆ์˜ ํด๋ž˜์Šค๋ฟ ์•„๋‹ˆ๋ผ, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ์•ˆ์˜ ํด๋ž˜์Šค์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • Private ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ์˜ค๋กœ์ง€ ๊ทธ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Boxing, Unboxing์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฐ’์„ "Wrapper" ํด๋ž˜์Šค๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š”๊ฒƒ์ด ๋ฐ•์‹ฑ์ด๋ผ๊ณ  ํ•˜๊ณ , ๋ฐ˜๋Œ€๋กœ "Wrapper" ํด๋ž˜์Šค ํƒ€์ž…์˜ ๊ฐ’์„ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ์„ ์–ธ๋ฐ•์‹ฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    • ์ž๋ฐ” 1.5 ์ดํ›„ ๋ถ€ํ„ฐ Auto Boxing/ Auto Unboxing์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์›์‹œํƒ€์ž…์„ ์ฐธ์กฐํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ Boxing / Unboxingํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์›์ธ์ผ ๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก non-static ๋ฉค๋ฒ„์™€ static ๋ฉค๋ฒ„์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • static ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค ๋‹น ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๊ณ  non-static ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด๋งˆ๋‹ค ๋ณ„๋„๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • static ๋ฉค๋ฒ„๋Š” ๋™์ผํ•œ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฐ์ฒด๋“ค์— ์˜ํ•ด ๊ณต์œ ๋˜๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก main ๋ฉ”์†Œ๋“œ๊ฐ€ public static์ธ ์ด์œ ๋Š”?

  • ์–ด๋–ค ํŒจํ‚ค์ง€์— ์žˆ๋˜ main ๋ฉ”์†Œ๋“œ๋Š” JVM์— ์˜ํ•ด์„œ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋˜์•ผ ํ•˜๋ฏ€๋กœ public์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ์ „ main ๋ฉ”์†Œ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ static์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Final ํ‚ค์›Œ๋“œ์˜ ์šฉ๋„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค์— ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณ€์ˆ˜์— ์‚ฌ์šฉ ์‹œ ๊ฐ’์ด ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉ ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ๋ชปํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉฐ ํด๋ž˜์Šค์— ์‚ฌ์šฉํ•  ์‹œ์— ์ƒ์†์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก Generic์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ๊ฐ์ฒด ํƒ€์ž…์„ ์ปดํŒŒ์ผ ์‹œ์— ์ฒดํฌํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ ์‹œ์— ํƒ€์ž…์„ ์ฒดํฌํ•˜๋ฏ€๋กœ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ณ  ํ˜•๋ณ€ํ™˜์˜ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ==๊ณผ equals()์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

  • ๋™๋“ฑ์—ฐ์‚ฐ์ž(==)๋Š” ๋‘ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธ์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • equals()๋Š” ๋‘ ๊ฐ์ฒด์˜ ๊ฐ’์ด ๊ฐ™์€์ง€๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก Call by Reference์™€ Call by Value์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • call by reference ์ฃผ์†Œ๊ฐ’์„ ํ˜ธ์ถœ

  • call by value ์‹ค์ œ ๊ฐ’์„ ํ˜ธ์ถœ

  • ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌ๋ฅผ ํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š๋ƒ, ์•„๋‹ˆ๋ฉด ์ง์ ‘ ์ฐธ์กฐ๋ฅผ ํ•˜๋Š๋ƒ ์ฐจ์ด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • Call by Value์˜ ๊ฒฝ์šฐ ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์ด ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

  • Call by reference๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ์›๋ž˜์˜ ๊ฐ’์ด ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์ถ”์ƒํด๋ž˜์Šค์˜ ๋ชฉ์ ์€ ๊ณตํ†ต์ ์„ ์ฐพ์•„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชฉ์ ์€ ๊ตฌํ˜„ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก java reflection์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๋•Œ ํ•„์š”ํ•œ API ์ž…๋‹ˆ๋‹ค.
    • ์ฆ‰, ์ž‘์„ฑ ์‹œ์ ์—๋Š” ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ, ๋Ÿฐํƒ€์ž„ ์‹œ์ ์—์„œ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ IntelliJ์˜ ์ž๋™์™„์„ฑ์ด๋‚˜ Spring ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ด๋…ธํ…Œ์ด์…˜ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์ด ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ด๋‹ค.
์ฐธ๊ณ 

๐Ÿ’ก ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™”์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ์ง๋ ฌํ™”๋Š” ๊ฐ์ฒด๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  • ์—ญ์ง๋ ฌํ™”๋Š” ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก StringBuilder์™€ StringBuffer์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  • StringBuilder๋Š” ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์•„ StringBuffer๋ณด๋‹ค ์†๋„๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • StringBuffer์€ ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Java 8์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

  • java.time ํŒจํ‚ค์ง€์™€ ์ŠคํŠธ๋ฆผ API, ๋žŒ๋‹ค ํ‘œํ˜„์‹์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Lambda๋ž€ ๋ฌด์—‡์ด๊ณ  ์–ด๋– ํ•œ ์žฅ์ ์ด ์žˆ๋Š”๊ฐ€?

  • "์‹๋ณ„์ž์—†์ด ์‹คํ–‰๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜" ํ•จ์ˆ˜์ธ๋ฐ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์ฝ”๋“œํ•œ์ค„์— ํ•จ์ˆ˜๋ฅผ ์จ์„œ ๊ทธ๊ฒƒ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Stream API ํŠน์ง•์ด๋‚˜ ์žฅ์ ์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

  • Stream API๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
List<Integer> list = new ArrayList<>();
long count = list.stream().filter(x -> x>3).count(); // 3๋ณด๋‹ค ํฐ ์ˆ˜๋งŒ countํ•˜์—ฌ ๊ฐ’ ์ถ”์ถœ

๐Ÿ’ก Garbage Collector(GC)๋ž€?

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•  ํ•„์š”์—†์ด ํž™ ์˜์—ญ์—์„œ ๋”์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฐ์ฒด๋“ค(์“ฐ๋ ˆ๊ธฐ ๊ฐ์ฒด) ๋ฅผ ์ฐพ์•„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก GC์— ์˜ํ•ด ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋Š” ์‹œ์ ์„ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.

  • ์ง€์—ญ๋ณ€์ˆ˜๋Š” scope๊ฐ€ ๋๋‚˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜์— ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์ „์—ญ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  • GC ๋™์ž‘ ์›๋ฆฌ image

    image

    1. ์ฒ˜์Œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” Eden์— ์œ„์น˜
    2. Minor GC ๋ฐœ์ƒ ํ›„์— ์‚ด์•„์žˆ๋‹ค๋ฉด Survivor ์˜์—ญ์œผ๋กœ ์ด๋™
    3. Survivor์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” Old Generation ์˜์—ญ์œผ๋กœ ์ด๋™

๐Ÿ’ก JAVA์—์„œ ๋ฐ”์ดํŠธ์ฝ”๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

  • ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ(Java bytecode)๋ž€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋œ ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (ex).class ํŒŒ์ผ)

๐Ÿ’ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  • [๋ณต๊ตฌํ˜•] Try/Catch ๋ธ”๋ก

    • ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ try๋ฌธ์œผ๋กœ ๊ฐ์‹ธ๊ณ , ๋ฐœ์ƒ ์‹œ์— ์ฒ˜๋ฆฌ๋Š” catch์—์„œ ๋ฐ›์•„์„œ ํ•œ๋‹ค. ์ฆ‰, ํŠธ๋ผ์ด ์บ์น˜ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์—์„œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
    • trywithresource: try์— ์ž์› ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋ฉด, try ์ฝ”๋“œ ๋ธ”๋ก์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์ž์›์„ ์ข…๋ฃŒํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ
  • [ํšŒํ”ผํ˜•] throw ํ‚ค์›Œ๋“œ ์„ ์–ธ

    • ๋ฉ”์†Œ๋“œ ๋๋‹จ์— throws Exception ์„ ์„ ์–ธํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ, ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์ฝ”๋“œ๋กœ ์˜ˆ์™ธ๋ฅผ ๋˜๋Œ๋ ค ๋ณด๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • [์ „ํ™˜ํ˜•] catch์—์„œ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ

    • ํ˜ธ์ถœ ์ธก์—์„œ ์—๋Ÿฌ์˜ ํƒ€์ž…์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ’ก ๋Ÿฐํƒ€์ž„(Runtime)๊ณผ ์ปดํŒŒ์ผํƒ€์ž„(Compiletime)์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

  • ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ฒซ์งธ๋กœ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ปดํŒŒ์ผ์ด๋ผ๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ๊ธฐ๊ณ„์–ด์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ๋˜์–ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋˜๋ฉฐ, ์ด๋Ÿฌํ•œ ํŽธ์ง‘ ๊ณผ์ •์„ ์ปดํŒŒ์ผํƒ€์ž„(Compiletime) ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • ์ปดํŒŒ์ผ๊ณผ์ •์„ ๋งˆ์นœ ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์‹คํ–‰๋˜์–ด ์ง€๋ฉฐ, ์ด๋Ÿฌํ•œ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘๋˜์–ด์ง€๋Š” ๋•Œ๋ฅผ ๋Ÿฐํƒ€์ž„(Runtime)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • ์ปดํŒŒ์ผํƒ€์ž„ ์˜ค๋ฅ˜์˜ ์œ ํ˜•

    • ์‹ ํƒ์Šค ์˜ค๋ฅ˜
    • ํƒ€์ž…์ฒดํฌ ์˜ค๋ฅ˜
  • ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜์˜ ์œ ํ˜•

    • 0๋‚˜๋ˆ„๊ธฐ ์˜ค๋ฅ˜
    • ๋„(Null)์ฐธ์กฐ ์˜ค๋ฅ˜
    • ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜

๐Ÿ’ก JAVA ๋™์ž‘ ์›๋ฆฌ

image

  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ(.java)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  2. ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์†Œ์ŠคํŒŒ์ผ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.
  3. ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํด๋ž˜์Šค ๋กœ๋”์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  4. ํด๋ž˜์Šค๋กœ๋”์— ์˜ํ•ด importํ•œ ํด๋ž˜์Šค ์ฝํžŒ๋‹ค.
  5. ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์˜ํ•ด JVM ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค.
  6. ์‹คํ–‰์—”์ง„์€ JVM ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์‹ ๊ฐ€์ ธ์™€ ์‹คํ–‰ํ•œ๋‹ค. (Java ์ปดํŒŒ์ผ๋Ÿฌ ์‚ฌ์šฉ)

๐Ÿ’ก ์ž๋ฐ”์—์„œ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • Runnable ์ธํ„ฐํŽ˜์ด๋ฅผ ํ™•์žฅํ•ด run() ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„
  • Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  run() ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด ๊ตฌํ˜„

๐Ÿ’ก Collection ์ •์˜์™€ ์ข…๋ฅ˜๋ฅผ ๋ง์”€ํ•ด์ฃผ์„ธ์š”

  • ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(collection framework)๋ž€ ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • Collection ์ธํ„ฐํŽ˜์ด์Šค

    • List ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ArrayList, LinkedList
  • Map ์ธํ„ฐํŽ˜์ด์Šค

    • ํ‚ค์™€ ๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์œผ๋กœ, ํ‚ค ๊ฐ’์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • HashMap, TreeMap

๐Ÿ’ก ArrayList์™€ LinkedList์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”

  • ArrayList๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์ญ‰ ๋Š˜์–ด์„  ๋ฐฐ์—ด์˜ ํ˜•์‹์„ ์ทจํ•˜๊ณ  ์žˆ๋Š” ๋ฐ˜๋ฉด LinkedList๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋Š˜์–ด์„  ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž๋ฃŒ์˜ ์ฃผ์†Œ ๊ฐ’์œผ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • ArrayList

    • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ ์ž„์‹œ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ณ„ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์–ด ๊ฒ€์ƒ‰์—๋Š” ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์ž„์‹œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ถˆ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • LinkedList

    • ๋‚ด๋ถ€์ ์œผ๋กœ ๋…ธ๋“œ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์•ž ๋’ค ๋…ธ๋“œ๋งŒ ์ธ์ง€ํ•˜๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    • ์ธ๋ฑ์Šค๊ฐ€ ๋”ฐ๋กœ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์‹œ ์ „ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•ด์•ผํ•˜์—ฌ ๊ฒ€์ƒ‰์‹œ ๋ถˆ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๊ฐ€ ์—†์–ด ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก CheckedException๊ณผ UnCheckedException์˜ ์ฐจ์ด

image

๊ตฌ๋ถ„ Checked Exception Unchecked Exception
ํ™•์ธ์‹œ์  ์ปดํŒŒ์ผ ์‹œ์  ๋Ÿฐํƒ€์ž„ ์‹œ์ 
์ฒ˜๋ฆฌ์—ฌ๋ถ€ ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
ํŠธ๋žœ์žญ์…˜์ฒ˜๋ฆฌ ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋กค๋ฐฑํ•˜์ง€ ์•Š์Œ ์˜ˆ์™ธ ๋ฐœ์ƒ์‹œ ๋กค๋ฐฑ
์ฐธ๊ณ 

๐Ÿ’ก Synchronized(๋™๊ธฐํ™”)๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”

  • synchronized ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ)๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • synchronized ๋ธ”๋ก(block) ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก try-with-resource๋ž€?

  • ์ž๋™์œผ๋กœ ์ž์›์„ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • try์—์„œ ์„ ์–ธ๋œ ๊ฐ์ฒด๊ฐ€ AutoCloseable์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค๋ฉด Java๋Š” try๊ตฌ๋ฌธ์ด ์ข…๋ฃŒ๋  ๋•Œ ๊ฐ์ฒด์˜ close() ๋ฉ”์†Œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Functional Interface๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • Functional Interface๋ž€ ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋กœ๋Š” Predicate, Comparator, Runnable ์ธํ„ฐํŽ˜์ด์Šค๋“ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Method Reference๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ๋žŒ๋‹ค ํ‘œํ˜„์‹ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹ ํ•ด ๊ธฐ์กด์˜ ๋ฉ”์„œ๋“œ ์ •์˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋ฉ”์„œ๋“œ์˜ ์ •์˜์™€ ๋™์ผํ•œ ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ๋งค๋ฒˆ ์ž‘์„ฑํ•˜๋Š” ๋ถˆํŽธํ•จ์—์„œ ๋‚˜์˜จ ๊ธฐ๋ฒ•์ด๋ฉฐ, ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
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");
}

๐Ÿ’ก Default Method ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ๋ฉ”์„œ๋“œ ๊ตฌํ˜„์„ ํฌํ•จํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์–ด์ง‘๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ๋„ ์ƒ์†๋ฐ›๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ธŒํด๋ž˜์Šค๋Š” ์ตœ์†Œํ•œ์˜ ๋ฉ”์†Œ๋“œ๋งŒ ๊ตฌํ˜„ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
interface MyInterface {
    default void printHello() {
    	System.out.println("Hello World");
    }
}

๐Ÿ’ก Optional ํด๋ž˜์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • Optional ํด๋ž˜์Šค๋Š” NullPointerException๋ฅผ ๊ด€๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๊ฐ์‹ผ Wrapper Class ์ž…๋‹ˆ๋‹ค. Optional ์ธ์Šคํ„ด์Šค๋Š” ๋ชจ๋“  ํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Optional<String> opt = Optional.ofNullable("Optional ๊ฐ์ฒด");

if(opt.isPresent()) {
    System.out.println(opt.get());
}

๐Ÿ’ก ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ…์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ์„œ๋ธŒ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํผ ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •์„ ์—…์บ์ŠคํŒ…์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์—…์บ์ŠคํŒ… ๋œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์„œ๋ธŒ ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๋‹ค์šด ์บ์ŠคํŒ…์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก this ํ‚ค์›Œ๋“œ๋Š” ์–ธ์ œ ์‚ฌ์šฉ๋˜๋‚˜์š”?

  • ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ์ƒ์„ฑ์ž/๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(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;
    }
}