๋„์ ๋„์  ๐Ÿ“’

Yiยท2022๋…„ 8์›” 25์ผ
0

study

๋ชฉ๋ก ๋ณด๊ธฐ
1/4

public static void main(String [] args)

public

  • main method๋Š” Entry Point๋กœ, ํ•ญ์ƒ public์ด์–ด์•ผ ํ•จ

static

  • static <=> dynamic
  • class๋Š” memory์— loading๋œ ๋‹ค์Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ๋ฐ, static์ด ๋ถ™์€ class๋‚˜ method, variable์€ compile ์‹œ ์ž๋™์œผ๋กœ loading ๋Œ
  • main method๋Š” class loading ์—†์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— static ์‚ฌ์šฉ

void

  • return type ์—†์Œ
  • main method๋Š” Entry Point์ด๋ฉด์„œ program์˜ ๋์ด๊ธฐ๋„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— return ์ž์ฒด๊ฐ€ ๋ถˆํ•„์š”

String[] args

  • program ์‹คํ–‰ ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณด๋‚ด์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ ์˜๋ฏธ
  • 1๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ์‚ฌ์šฉ

main method

  • String ํƒ€์ž…์˜ ๋ฐฐ์—ด args๋ฅผ ์ธ์ž๋กœ ์„ ์–ธ
  • main ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
  • Java ํ”„๋กœ๊ทธ๋žจ์€ class ๊ฐฏ์ˆ˜๋งŒํผ์˜ main ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จ ๊ฐ€๋Šฅ

* ์ž๋ฐ”๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ์—๋Š” ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ์กด์žฌ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, public class๋Š” ํ•˜๋‚˜๋งŒ ์กด์žฌ ๊ฐ€๋Šฅ
(public class๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„๊ณผ ๋™์ผํ•ด์•ผ ํ•จ)


๋ณ€์ˆ˜ ์ง“๊ธฐ

CamelCasing: ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ํŒŒ๋ผ๋ฏธํ„ฐ, ์ƒ์ˆ˜ ๋“ฑ = ์ฒซ๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž, ๋‘๋ฒˆ์งธ ๋‹จ์–ด๋ถ€ํ„ฐ๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
PascalCasing: ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์—ด๊ฑฐํ˜• ๋“ฑ = ๋ชจ๋“  ๋‹จ์–ด์˜ ์ฒซ ๋‹จ์–ด๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘


์ ‘๊ทผ ์ œ์–ด์ž๋ž€? (Access Modifier)

: ํ•œ ํด๋ž˜์Šค ์•ˆ์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์–ด๋Š๋งŒํผ ๊ณต๊ฐœ๋ฅผ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •

  • OOP(Object Oriented Programming)์˜ ํŠน์ง• ์ค‘์— ์บก์Šํ™”(ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ์ •๋ณด๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ˆจ๊ฒจ์„œ ์œ„ํ—˜์„ ์ตœ์†Œํ™”) ๊ฐœ๋…์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • ์˜์กด(์™ธ๋ถ€์—์„œ ๊ฐ–๋‹ค์”€)ํ•˜๋ฉด ๊ฒฐํ•ฉ๋„ ์ƒ์Šนํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜์กด๊ด€๊ณ„๋ฅผ ๋Š์–ด๋ƒ„์œผ๋กœ์จ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ์—ญํ• ์„ ํ•จ

์ข…๋ฅ˜

  1. public: ์–ด๋Š ๊ฒฝ์šฐ์—๋„ ๊ณต๊ฐœ
  2. default: ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ์•ˆ๋˜๊ณ , ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€ ์•ˆ์—์„œ๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅ
  3. protected: ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ์•ˆ๋˜์ง€๋งŒ, ํŒจํ‚ค์ง€ ์•ˆ์—์„œ์™€ ์ƒ์†ํ•œ ๊ฒฝ์šฐ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  4. private: ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ์ •๋ณด๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Œ -> ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ž€?

: ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
* Collection์€ Iterable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๊ณ , Collection ์•ˆ์—๋Š” List, Queue, Set์ด ์žˆ์Œ (Map์€ Key์™€ Value๋กœ ์ด๋ค„์ ธ์žˆ์–ด ๊ตฌ์„ฑ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— Collection์— ํฌํ•จ๋˜์ง€ ์•Š๊ณ  ๋ณ„๋„๋กœ ๋”ฐ๋กœ ์กด์žฌ)

List

: ๊ฐ์ฒด๋ฅผ ์ผ๋ ฌ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌ

  • ArrayList: ์›์†Œ๋“ค์„ ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ์— ๋ฏธ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด๋†“์€ ํ›„ ์ฐธ๊ณ ํ•˜๋ ค๋Š” ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ง‘์–ด๋„ฃ๊ฒŒ ๋Œ(๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ ํฌ๊ธฐ๋Š” 10์ธ๋ฐ ์›์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด 10์„ ๋„˜๊ฒŒ ๋˜๋ฉด ๋ฆฌ์‚ฌ์ด์ง•์„ ํ•˜๊ฒŒ ๋Œ. ๋ชจ๋“  ์›์†Œ๋“ค์ด ๋ชจ๋‘ ๋ฆฌ์‚ฌ์ด์ง•์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด ๋Œ)
  • LinkedList: ๋‹ค์Œ ๊ฐ์ œ์˜ ์ฃผ์†Œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์–ด ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌ
  • Vector: ArrayList์™€ ๋™์ผํ•˜์ง€๋งŒ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™” ๊ตฌํ˜„์ด ๋˜์–ด์žˆ์–ด thread-safeํ•จ. ๋Œ€์‹  ์†๋„๊ฐ€ ๋Š๋ฆผ

Set

: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, ์ค‘๋ณตํ•ด์„œ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์ง•

  • HashSet: hashCode ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ hash๊ฐ’(๋ฐ์ดํ„ฐ๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒƒ)์„ ๊ฐ€์ ธ์™€ ์ค‘๋ณต ์—ฌ๋ถ€ ํ™•์ธ
  • TreeSet: compareTo() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ(๋•Œ๋ฌธ์— Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋งŒ TreeSet์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ด์ง„ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ €์žฅ(์ถ”๊ฐ€์™€ ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ ํŠธ๋ฆฌ๋ฅผ ์žฌ๋ฐฐ์—ด ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…-์‚ญ์ œ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ณ , ๊ฒ€์ƒ‰์€ ํŠธ๋ฆฌ ๋†’์ด๋งŒํผ ํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— (์‹œ๊ฐ„๋ณต์žก๋„๋Š” log2N) ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฆ„)
  • LinkedHashSet: ํด๋ž˜์Šค ๋‚ด๋ถ€์— LinkedList๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ ์ž…๋ ฅํ•œ ์ˆœ์„œ๊นŒ์ง€ ์ €์žฅ๋Œ

Map

: ์ปฌ๋ ‰์…˜๊ณผ๋Š” ๋ณ„๋„์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , Key์™€ Value๋กœ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ (Key๋Š” ์ค‘๋ณต์œผ๋กœ ์ €์žฅ๋  ์ˆ˜ ์—†์Œ)

  • HashMap: HashCode๋ฅผ ์‚ฌ์šฉํ•ด Key๋ฅผ ์ €์žฅํ•˜๊ณ  key์— ๋”ฐ๋ผ value๋ฅผ ์ €์žฅ, Hash๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐํšŒ์—์„œ ์œ ๋ฆฌํ•จ
  • HashTable: HashMap๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ thread-safeํ•จ
  • LinkedHashMap: ๋‚ด๋ถ€์— LinkedList๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์ž…๋ ฅ ์ˆœ์„œ๋ฅผ ์ €์žฅ
  • TreeMap: ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Map, Tree๊ตฌ์กฐ์— Key๋ฅผ ์ €์žฅ
Iterable์ด๋ž€ Iterator ๋ฉ”์†Œ๋“œ๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๊ณ , Iterator ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋Œ

Iterator ๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜
1. hasNext(): ๋‹ค์Œ ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š”๊ฐ€? ๋‹ค์Œ ์›์†Œ๊ฐ€ ์žˆ๋Š”๊ฐ€?
2. next(): ์žˆ๋‹ค๋ฉด ๋‹ค์Œ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜
3. remove(): ๋ฐฉ๊ธˆ ๊ฐ€์ ธ์˜จ ์›์†Œ๋ฅผ ์‚ญ์ œ

0๊ฐœ์˜ ๋Œ“๊ธ€