πŸ“™[λ…μ„œ] Do it! μžλ°” ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ

ChobbyΒ·2023λ…„ 2μ›” 4일
2

Technical Books

λͺ©λ‘ 보기
5/6

πŸ§‘μ™„λ£Œ 일자

2023-02-04 κ³ λ‹¨ν–ˆλ˜ μžλ°” μž…λ¬Έ ν”„λ‘œκ·Έλž˜λ° 책을 μ™„λ…ν–ˆμŠ΅λ‹ˆλ‹€.
짝짝짝짝짝!

πŸ’›λ°°μš΄ λ‚΄μš©

Java Fundamental (2023.01.27 - 2023.02.05)

2023.01.27

ν•™μŠ΅ν•  λ‚΄μš©

  • μžλ°”μ˜ μž₯점
  • ν•„μš” ν™˜κ²½ ꡬ성
  • λ³€μˆ˜ 및 μžλ£Œν˜•

ν•™μŠ΅ν•œ λ‚΄μš©

  • μžλ°”μ˜ μž₯점
    • ν”Œλž«νΌμ— 영ν–₯을 받지 μ•ŠλŠ”λ‹€.
      • JavaλŠ” ν”Œλž«νΌμ˜ 영ν–₯을 받지 μ•ŠλŠ”λ‹€. Javaλ₯Ό 컴파일 ν•  경우 .class의 ν™•μž₯자λ₯Ό κ°–κ²Œλ˜λ©°, μ΄λŠ” 쀑간 κΈ°κ³„μ–΄λ‘œ, μš΄μ˜μ²΄μ œμ— λ§žλŠ” μžλ°” 가상 머신을 ν™œμš©ν•˜μ—¬μ•Ό 싀행이 κ°€λŠ₯ν•˜λ‹€. OS에 λ§žλŠ” 가상 머신을 ν™œμš©ν•˜μ—¬ ν”Œλž«νΌμ— 영ν–₯을 받지 μ•ŠλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ꡬ좕할 수 있게되며, μ΄λŠ” ν•œ 번 μž‘μ„±ν•˜λ©΄, μ–΄λ””μ„œλ“  λŒμ•„κ°„λ‹€λŠ” Java의 μŠ¬λ‘œκ±΄μ— λ”°λ₯Έ 결과이닀.
    • 객체지ν–₯ μ–Έμ–΄λ‘œ μœ μ§€λ³΄μˆ˜κ°€ 쉽고 ν™•μž₯성이 μ’‹λ‹€.
      • 클래슀λ₯Ό ν™œμš©ν•˜μ—¬ κ³΅ν†΅λ˜λŠ” 뢀뢄을 μ‰½κ²Œ μΆ”κ°€ν•˜μ—¬ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ—, μœ μ§€λ³΄μˆ˜κ°€ 쉽고 ν™•μž₯성이 μ’‹λ‹€.
    • μ•ˆμ •μ μ΄λ‹€.
      • Cλ‚˜ C++κ³Ό 달리 포인터λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬λ₯Ό 직접 μ œμ–΄ν•  일이 μ—†μœΌλ―€λ‘œ μ•ˆμ •λœ μ½”λ“œλ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
      • 가비지 컬렉터 (GC)κ°€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 동적 λ©”λͺ¨λ¦¬λ₯Ό 주기적으둜 μˆ˜κ±°ν•˜κΈ° λ•Œλ¬Έμ— 효율적인 관리 λ˜ν•œ κ°€λŠ₯ν•˜λ‹€.
    • μ˜€ν”ˆμ†ŒμŠ€
      • μ˜€ν”ˆμ†ŒμŠ€μ΄λ©°, 개발된 κΈ°λŠ₯듀을 ν™œμš©ν•΄ κ°œλ°œν•˜κ³ μž ν•˜λŠ” 뢀뢄에 λŒ€ν•΄ λΉ λ₯Έ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.
  • λ³€μˆ˜ 및 μžλ£Œν˜•
    • μ •μˆ˜ μžλ£Œν˜•
      • byte
      • short
      • int
      • long
    • 문자 μžλ£Œν˜•
      • char
    • μ‹€μˆ˜ μžλ£Œν˜•
      • float
      • double
    • 논리 μžλ£Œν˜•
      • boolean
    • μΆ”λ‘ ν˜•
      • var
  • ν˜• λ³€ν™˜
    • λ¬΅μ‹œμ  ν˜• λ³€ν™˜
      • λ°”μ΄νŠΈ 크기가 μž‘μ€ μžλ£Œν˜• β†’ 큰 μžλ£Œν˜• (데이터 손싀 λ°œμƒν•˜μ§€ μ•ŠμŒ)
    • λͺ…μ‹œμ  ν˜• λ³€ν™˜
      • λ°”μ΄νŠΈ 크기가 큰 μžλ£Œν˜• β†’ μž‘μ€ μžλ£Œν˜• (데이터 손싀 λ°œμƒ)

2023.01.28

ν•™μŠ΅ν•  λ‚΄μš©

  • μ—°μ‚°μžμ— λŒ€ν•œ 이해
    • κΈ°λ³Έ μ—°μ‚°μž
    • λΉ„νŠΈ μ—°μ‚°μž
  • μ œμ–΄ 흐름 이해
    • 쑰건문
    • 반볡문
  • ν΄λž˜μŠ€μ™€ 객체
    • ν΄λž˜μŠ€λž€?
      • 멀버 λ³€μˆ˜ 및 λ©”μ„œλ“œμ— λŒ€ν•œ 이해
    • ν•¨μˆ˜λž€?
      • ν•¨μˆ˜ 호좜과 μŠ€νƒ λ©”λͺ¨λ¦¬
      • ν•¨μˆ˜μ˜ μž₯점
    • ν΄λž˜μŠ€μ™€ μΈμŠ€ν„΄μŠ€
      • 클래슀 생성방법 및 μΈμŠ€ν„΄μŠ€μ™€ μ°Έμ‘° λ³€μˆ˜
      • μΈμŠ€ν„΄μŠ€μ™€ νž™ λ©”λͺ¨λ¦¬
    • μƒμ„±μž
      • μƒμ„±μž μ˜€λ²„λ‘œλ“œ
    • μ°Έμ‘° μžλ£Œν˜•
    • 정보 은닉
      • μ ‘κ·Ό μ œμ–΄μž
      • getter, setter
    • thisλž€?
    • static λ³€μˆ˜
    • 싱글톀 νŒ¨ν„΄

ν•™μŠ΅ν•œ λ‚΄μš©

  • μ—°μ‚°μžμ— λŒ€ν•œ 이해
    • κΈ°λ³Έ μ—°μ‚°μž
      • ν•­
        • 단항 μ—°μ‚°μž
          • ++, β€” λ“±
        • 이항 μ—°μ‚°μž
          • num1+num2
        • μ‚Όν•­ μ—°μ‚°μž
          • num1 > num2 ? true : false
      • λŒ€μž… μ—°μ‚°μž
        • int num1 = 3
      • λΆ€ν˜Έ μ—°μ‚°μž
        • +3, -3
      • μ‚°μˆ  μ—°μ‚°μž
        • +, -, *, /, %
      • 증감 μ—°μ‚°μž
        • ++, β€”
      • 관계 μ—°μ‚°μž
        • , <, β‰₯, ≀, ==, β‰ 

      • 논리 μ—°μ‚°μž
        • &&, ||, !
      • 볡합 λŒ€μž… μ—°μ‚°μž
        • +=, -=, …
    • λΉ„νŠΈ μ—°μ‚°μž
      • λΉ„νŠΈ 논리 μ—°μ‚°μž
        • &, |, ^, ~
      • λΉ„νŠΈ 이동 μ—°μ‚°μž
        • , <<, >>>

  • μ œμ–΄ 흐름 이해
    • 쑰건문
      • if & else
      • switch
    • 반볡문
      • while
      • do-while
      • for
  • ν΄λž˜μŠ€μ™€ 객체
    • 클래슀

      • λ©€λ²„λ³€μˆ˜: 클래슀 λ‚΄λΆ€μ—μ„œ λ‹€λ£¨λŠ” λ³€μˆ˜
      • λ©”μ„œλ“œ: 클래슀 λ‚΄λΆ€μ—μ„œ 멀버 λ³€μˆ˜λ₯Ό ν™œμš©ν•  λͺ©μ μœΌλ‘œ μ„ μ–Έλœ ν•¨μˆ˜
        • λ°˜ν™˜ 값이 μ—†λŠ” λ©”μ„œλ“œλŠ” voidλ₯Ό μ„ μ–Έν•œλ‹€.
      • νŒ¨ν‚€μ§€: 클래슀 파일의 묢음(같은 μ΄λ¦„μ˜ ν΄λž˜μŠ€λΌλ„, νŒ¨ν‚€μ§€ 이름이 λ‹€λ₯΄λ©΄ λ‹€λ₯Έ 클래슀)
    • ν•¨μˆ˜

      • main μ™ΈλΆ€μ—μ„œ μ„ μ–Έλœ ν•¨μˆ˜λŠ” static을 λΆ™μ—¬μ£Όμ–΄μ•Ό μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
      • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ μŠ€νƒμ˜ ν˜•νƒœλ‘œ λ©”λͺ¨λ¦¬ 곡간이 λ§Œλ“€μ–΄μ§€λ©° LIFOν˜•νƒœλ‘œ λ°˜ν™˜λœλ‹€.
      • ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λ₯Ό 지역 λ³€μˆ˜λΌκ³  λΆ€λ₯΄κ³ , 지역 λ³€μˆ˜λŠ” μŠ€νƒ λ©”λͺ¨λ¦¬μ— μƒμ„±λœλ‹€.
    • μΈμŠ€ν„΄μŠ€

      • new μ˜ˆμ•½μ–΄λ‘œ 호좜된 μƒμ„±μž 클래슀λ₯Ό λ‹΄κ³ μžˆλŠ” λ³€μˆ˜λ₯Ό μΈμŠ€ν„΄μŠ€λΌκ³  ν•œλ‹€.
        • 이 λ•Œ, μΈμŠ€ν„΄μŠ€λŠ” νž™ λ©”λͺ¨λ¦¬μ— ν΄λž˜μŠ€κ°€ μ €μž₯되며, μŠ€νƒ λ©”λͺ¨λ¦¬μ— λ³€μˆ˜κ°€ μ €μž₯λœλ‹€.
      • νž™ λ©”λͺ¨λ¦¬λž€, 동적 λ©”λͺ¨λ¦¬ κ³΅κ°„μœΌλ‘œ, μ‚¬μš©μ΄ λλ‚œ ν›„ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν•΄μ œν•΄μ€˜μ•Ό ν•˜μ§€λ§Œ, μ•žμ„œ μ •λ¦¬ν–ˆλ“―μ΄ JavaλŠ” 가비지 컬렉터(GC)κ°€ μžλ™μœΌλ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”λͺ¨λ¦¬λ₯Ό ν•΄μ œν•΄μ€€λ‹€.
    • μƒμ„±μž

      • new μ˜ˆμ•½μ–΄ 뒀에 μ˜€λŠ” 클래슀 이름을 μƒμ„±μžλΌκ³  ν•œλ‹€.
      • κ°œλ°œμžκ°€ μ •μ˜ν•˜μ§€ μ•ŠλŠ” 경우 μžλ™μœΌλ‘œ μƒμ„±μžλŠ” 생성됨
      • μƒμ„±μžκ°€ 두 개 μ΄μƒμ΄κ±°λ‚˜, λ©”μ„œλ“œ 이름이 κ°™κ³  λ§€κ°œλ³€μˆ˜λ§Œ λ‹€λ₯Έ 경우λ₯Ό μ˜€λ²„λ‘œλ“œλΌκ³  ν•œλ‹€.
    • μ ‘κ·Ό μ œμ–΄μž

      • public: μ™ΈλΆ€ν΄λž˜μŠ€ μ–΄λ””μ—μ„œλ‚˜ μ ‘κ·Ό κ°€λŠ₯
      • protected: 같은 νŒ¨ν‚€μ§€ λ‚΄λΆ€, 상속 κ΄€κ³„μ˜ ν΄λž˜μŠ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯
      • 아무것도 μ—†λŠ” 경우: default둜 같은 νŒ¨ν‚€μ§€ λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
      • private: 같은 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯
      • getter: 값을 μ–»λŠ” λ©”μ„œλ“œ
      • setter: 값을 μ§€μ •ν•˜λŠ” λ©”μ„œλ“œ
        • ν΄λž˜μŠ€μ— μž…λ ₯된 값이 μ˜¬λ°”λ₯΄μ§€ λͺ»ν•œ 정보라면, 접근을 μ œμ–΄ν•΄μ•Ό ν•˜λ―€λ‘œ μ‚¬μš©λ¨
    • this

      • public은 파일λͺ…κ³Ό 같은 class만 κ°€μ§ˆ 수 μžˆλ‹€.. λͺ°λΌμ„œ μ—λŸ¬κ°€ 많이 λ‚¬μŒ..
      • μƒμ„±λœ μΈμŠ€ν„΄μŠ€ 슀슀둜λ₯Ό κ°€λ₯΄ν‚€λŠ” μ˜ˆμ•½μ–΄
    • static
      - static은 λ‹€λ₯Έ 멀버 λ³€μˆ˜μ™€ 같은 λ°©μ‹μœΌλ‘œ 클래슀 내뢀에 static을 λΆ™μ—¬ μ„ μ–Έν•˜λ©°, 맀번 μƒˆλ‘œ μƒμ„±λ˜λŠ” λ³€μˆ˜κ°€ μ•„λ‹Œ λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅μœ ν•˜λŠ” λ³€μˆ˜μ΄λ‹€.
      - 클래슀 λ³€μˆ˜λΌκ³ λ„ λΆˆλ¦°λ‹€.

      β€» λ³€μˆ˜ μœ ν˜• 정리

    • ν•¨μˆ˜μ—μ„œμ˜ κΈ°λŠ₯ κ΅¬ν˜„ β†’ 지역 λ³€μˆ˜

    • 클래슀의 속성, 각 μΈμŠ€ν„΄μŠ€ 별 κ°’ β†’ 멀버 λ³€μˆ˜

    • μ—¬λŸ¬ μΈμŠ€ν„΄μŠ€μ—μ„œ 곡유 β†’ static λ³€μˆ˜

    • 싱글톀 νŒ¨ν„΄

      • 단 ν•˜λ‚˜μ˜ μΈμŠ€ν„°λ§Œ ν•„μš”ν•œ 경우 ν™œμš©λ˜λŠ” νŒ¨ν„΄μ΄λ‹€.
      1. μƒμ„±μžλ₯Ό private으둜 λ§Œλ“€κΈ°
      2. 클래슀 내뢀에 static으둜 유일 μΈμŠ€ν„΄μŠ€ μƒμ„±ν•˜κΈ°
      3. μ™ΈλΆ€μ—μ„œ μ°Έμ‘°ν•  수 μžˆλŠ” public λ©”μ„œλ“œ λ§Œλ“€κΈ°
      4. μ‹€μ‚¬μš© μ½”λ“œ λ§Œλ“€κΈ°

2023.01.29

ν•™μŠ΅ν•  λ‚΄μš©

  • λ°°μ—΄ & ArrayList
    • λ°°μ—΄
    • 닀차원 λ°°μ—΄
    • ArrayList 클래슀
  • 상속 & λ‹€ν˜•μ„±
    • 상속
    • μƒμ†μ—μ„œ 클래슀 생성 및 ν˜• λ³€ν™˜
    • λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©
    • λ‹€ν˜•μ„±
    • λ‹€μš΄μΊμŠ€νŒ… & instance of
  • 좔상 클래슀
    • ν…œν”Œλ¦Ώ λ©”μ„œλ“œ
    • final

ν•™μŠ΅ν•œ λ‚΄μš©

  • λ°°μ—΄
    • μžλ£Œν˜• = new μžλ£Œν˜•[] {} 의 ꡬ쑰둜 μ„ μ–Έ
    • System.arraycopy(src, srcPos, dest, destPos, length)
      • src의 srcPos번째 μš”μ†ŒλΆ€ν„° length만큼의 수λ₯Ό destλ°°μ—΄μ˜ destPos번째 μš”μ†ŒλΆ€ν„° λΆ™μ—¬λ„£λŠ”λ‹€.
    • 얕은 볡사
      • arraycopyλ₯Ό 톡해 λ³΅μ‚¬λœ μΈμŠ€ν„΄μŠ€λŠ” μ„œλ‘œ 같은 μ£Όμ†Œλ₯Ό κ°€λ₯΄ν‚€λŠ” 얕은 볡사 μƒνƒœκ°€ λœλ‹€.
      • ν•΄λ‹Ή μƒνƒœμ—μ„œλŠ” 원본 배열에 변화에 따라 λ³΅μ‚¬λœ λ°°μ—΄μ˜ 값이 λ³€ν™”ν•œλ‹€.
    • κΉŠμ€ 볡사
      • κΉŠμ€ λ³΅μ‚¬λŠ”, λ°°μ—΄μ˜ 각 μš”μ†Œμ— μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³  값을 ν• λ‹Ήν•΄μ•Όν•œλ‹€.
      • ν•΄λ‹Ή μƒνƒœμ—μ„œ 원본 배열에 λ³€ν™”κ°€ μžˆλ‹€ν•˜λ”λΌλ„, λ³΅μ‚¬λœ 배열은 λ³€ν™”ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • ArrayList
      • μ œλ„€λ¦­ νƒ€μž…μœΌλ‘œ μ„ μ–Έλœ ArrayListλ₯Ό λ‹€λ£¨λŠ” 방법과, 객체 배열을 μž…λ ₯ν•˜μ—¬ μž…μΆœλ ₯을 κ΅¬ν˜„ν•˜λŠ” 방법에 λŒ€ν•΄ ν•™μŠ΅
  • 상속과 λ‹€ν˜•μ„±
    • 상속
      • extends ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ κ΅¬ν˜„λ˜λ©°, ν•΄λ‹Ή ν‚€μ›Œλ“œλ₯Ό κΈ°μ€€μœΌλ‘œ μ „μžλŠ” ν•˜μœ„ 클래슀 ν›„μžλŠ” μƒμœ„ 클래슀 라고 ν•œλ‹€.
      • μƒμœ„ 클래슀
        • μƒμœ„ ν΄λž˜μŠ€λŠ” ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ 접근이 κ°€λŠ₯ν•˜λ©°, μ™ΈλΆ€μ—μ„œμ˜ 접근을 μ°¨λ‹¨ν•˜λŠ” λ°©λ²•μœΌλ‘œ protected λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.
      • ν•˜μœ„ 클래슀
        • ν•˜μœ„ ν΄λž˜μŠ€λŠ” 상속받은 μƒμœ„ 클래슀의 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
        • super ν‚€μ›Œλ“œλ₯Ό 톡해 μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.
      • μƒμ†λ°›λŠ” 경우 μƒμœ„ 클래슀의 μƒμ„±μžκ°€ λ¨Όμ € 호좜된 ν›„ λ³€μˆ˜λ₯Ό λ©”λͺ¨λ¦¬μ— ν• λ‹Ήν•˜κ³  ν•˜μœ„ν΄λž˜μŠ€μ˜ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•œλ‹€.
    • ν˜• λ³€ν™˜
      • ν•˜μœ„ ν΄λž˜μŠ€λŠ” μƒμœ„ 클래슀의 ν˜•μœΌλ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ©°, 이 λ•Œ μ‚¬μš© κ°€λŠ₯ν•œ λ©”μ„œλ“œλŠ” μƒμœ„ 클래슀의 λ©”μ„œλ“œλ‘œ ν•œμ •λœλ‹€.
    • λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©
      • λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©μ΄ λ°œμƒν•œ 경우, μƒμœ„ 클래슀의 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ super.methodName() 의 λ°©μ‹μœΌλ‘œ ν˜ΈμΆœν•΄μ•Όν•œλ‹€.
      • @Overide ν‚€μ›Œλ“œλŠ” μ˜€λ²„λΌμ΄λ”© 될 λ©”μ„œλ“œ μœ„μ— μ„ μ–Έν•˜λ©°, μ»΄νŒŒμΌλŸ¬μ— μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€.
    • λ‹€ν˜•μ„±
      • 같은 ν΄λž˜μŠ€ν˜•μœΌλ‘œ μ„ μ–Έλœ μΈμŠ€ν„΄μŠ€λΌλ„, μƒμ„±μžμ— 따라 μ˜€λ²„λΌμ΄λ”© 된 λ©”μ„œλ“œκ°€ 호좜될 수 μžˆλ‹€.
    • λ‹€μš΄ μΊμŠ€νŒ…
      • μƒμœ„ 클래슀둜 ν˜•μ„ μ§€μ •ν•˜κ³  ν•˜μœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•œ 경우, ν•˜μœ„ 클래슀의 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν•˜μœ„ν΄λž˜μŠ€μ˜ μžλ£Œν˜•μœΌλ‘œ ν˜• λ³€ν™˜ν•˜λŠ” 것
      • instanceof : λ‹€μš΄μΊμŠ€νŒ…μ„ μœ„ν•΄ μΈμŠ€ν„΄μŠ€μ˜ 원 μžλ£Œν˜•μ„ ν™•μΈν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©
    • 좔상화
      • μΆ”μƒν™”λž€, κ΅¬ν˜„ν•  λ©”μ„œλ“œμ˜ 좔상적인 λͺ¨μŠ΅(이름, 인자)을 μ •μ˜ν•΄λ†“μ€ ꡬ쑰λ₯Ό μ˜λ―Έν•˜λ©° abstract λ₯Ό λΆ™μ—¬ μ„ μ–Έν•œλ‹€.
      • λ©”μ„œλ“œ 뿐 μ•„λ‹ˆλΌ 좔상 λ©”μ„œλ“œκ°€ μ†ν•œ ν΄λž˜μŠ€μ—λ„ abstract λ₯Ό λΆ™μ—¬ μ„ μ–Έν•΄μ•Ό 였λ₯˜λ₯Ό 방지할 수 μžˆλ‹€.
      • 좔상 클래슀λ₯Ό μƒμ†λ°›λŠ”λ‹€λ©΄, ν•΄λ‹Ή 클래슀 λ˜ν•œ 좔상 λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ μ„ μ–Έν•˜κ±°λ‚˜, 좔상 클래슀둜 μ„ μ–Έλ˜μ–΄μ•Ό ν•œλ‹€.
        • 이 λ•Œ, ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ @Override λ₯Ό μ„ μ–Έν•œ λ©”μ„œλ“œλ‘œ μΆ”μƒν™”ν–ˆλ˜ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•  수 μžˆλ‹€.
      • 좔상 ν΄λž˜μŠ€λŠ” new μ˜ˆμ•½μ–΄λ‘œ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†λ‹€.
      • μ™œ μ“ΈκΉŒ?? β†’ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•  λ©”μ„œλ“œμ˜ 좔상적인 면을 생성 (상속을 μœ„ν•΄)
      • κ΅¬ν˜„ λ‚΄μš©μ΄ 달라진닀 β†’ 좔상 λ©”μ„œλ“œ
      • κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•œλ‹€ β†’ κ΅¬ν˜„
    • ν…œν”Œλ¦Ώ λ©”μ„œλ“œ
      • final μ˜ˆμ•½μ–΄λ₯Ό 톡해 μ‹œλ‚˜μ˜€λ¦¬λ₯Ό μ •μ˜ν•˜λŠ” λ©”μ„œλ“œλ‘œ, ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ ν•  수 μ—†μ–΄μ•Ό ν•˜λ©°λ‘œμ§μ˜ 흐름을 λ‚˜νƒ€λ‚Έλ‹€.
    • final μ˜ˆμ•½μ–΄
      • λ³€μˆ˜ β†’ μƒμˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.
      • λ©”μ„œλ“œ β†’ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ν•  수 μ—†λ‹€.
      • 클래슀 β†’ 상속할 수 μ—†λ‹€.
      • ν”„λ‘œμ νŠΈλ₯Ό 진행할 λ•Œ μ—¬λŸ¬ νŒŒμΌμ—μ„œ κ³΅μœ ν•΄μ•Όν•˜λŠ” μƒμˆ˜ λ₯Ό ν•œ νŒŒμΌμ— 놓아 μ„ μ–Έν•˜μ—¬ μ‚¬μš©

2023.01.30

ν•™μŠ΅ν•  λ‚΄μš©

  • μΈν„°νŽ˜μ΄μŠ€
    • 좔상 λ©”μ„œλ“œ
    • implements
    • 닀쀑 상속
  • κΈ°λ³Έ 클래슀
    • Object
    • String
    • Wrapper
    • Class

ν•™μŠ΅ν•œ λ‚΄μš©

  • μΈν„°νŽ˜μ΄μŠ€
    • κ΅¬ν˜„ μ½”λ“œκ°€ μ—†λŠ” 좔상 λ©”μ„œλ“œλ‘œ abstract μ˜ˆμ•½μ–΄λ₯Ό λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ 좔상 λ©”μ„œλ“œλ‘œ λ³€ν™˜λœλ‹€.
    • implements μ˜ˆμ•½μ–΄λ‘œ 적용이 κ°€λŠ₯ν•˜λ©°, λͺ¨λ“  λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μ„ μ–Έλœ 클래슀 λ˜ν•œ 좔상 클래슀둜 μ „ν™˜λœλ‹€.
    • μ™œ μ“ΈκΉŒ? μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ ν΄λž˜μŠ€κ°€ μ–΄λ–€ κΈ°λŠ₯의 λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•˜λŠ”μ§€ λͺ…μ‹œν•˜λŠ” κΈ°λŠ₯으둜 μ‚¬μš©λœλ‹€.
    • ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” 닀쀑 μΈν„°νŽ˜μ΄μŠ€λ₯Ό 상속받을 수 μžˆλ‹€.
  • κΈ°λ³Έ 클래슀
    • λͺ¨λ“  μ›μ‹œ μžλ£Œν˜•μ€ java.lang 의 μœ„μΉ˜μ— μ‘΄μž¬ν•˜λ©°, 기본적으둜 컴파일 될 λ•Œ extends μ‹œν‚€κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 직접 μž‘μ„±ν•  ν•„μš”λŠ” μ—†λ‹€.
    • object
      • toString β†’ λ©”μ„œλ“œμ˜ μΈμŠ€ν„΄μŠ€ 정보λ₯Ό λ³΄μ—¬μ€Œ
      • String , Integer ν˜•μ€ μž¬μ •μ˜λœ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄ object.(class)@(hashcode)의 ꡬ성이 μ•„λ‹Œ λ§€κ°œλ³€μˆ˜ κ·Έ 자체λ₯Ό ν˜ΈμΆœν•œλ‹€.
        • @Override λ₯Ό 톡해 클래슀의 toString ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜μ—¬ μ›ν•˜λŠ”λŒ€λ‘œ 결괏값 μΆ”μΆœμ΄ κ°€λŠ₯ν•˜λ‹€.
      • equals β†’ 두 μš”μ†Œκ°€ 같은지 비ꡐ
        • ν• λ‹Ήλœ μ£Όμ†Ÿκ°’μ„ κΈ°μ€€μœΌλ‘œ λΉ„κ΅ν•˜κΈ°μ— 같은 클래슀 이더라도 κΈ°λŒ€μΉ˜ μ•ŠλŠ” 결괏값이 λ‚˜μ˜¬ 수 있음
      • hashCode β†’ ν•΄λ‹Ή μš”μ†Œμ˜ μ£Όμ†Ÿκ°’μ„ 좜λ ₯
        • equals λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•œ 경우, ν•΄λ‹Ή λ©”μ„œλ“œλ„ 같은 ν•΄μ‹œ μ½”λ“œλ₯Ό κ°€λ₯΄ν‚€λ„둝 λ³€κ²½ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.
    • string
      String str1 = new String("123"); // νž™ λ©”λͺ¨λ¦¬μ— μ €μž₯
      String str2 = "123"; // μƒμˆ˜ 풀에 μ €μž₯
      • StringBuilder λ₯Ό μ‚¬μš©ν•˜λ©΄, λ¬Έμžμ—΄μ΄ 변함에 따라 μƒˆ μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜μ§€ μ•Šκ³  κΈ°μ‘΄ μ£Όμ†Œμ— μ—°κ²°λœλ‹€. 즉 효율이 μƒμŠΉ
    • wrapper
      • κΈ°λ³Έ μžλ£Œν˜•μ„ 멀버 λ³€μˆ˜λ‘œ ν¬ν•¨ν•˜μ—¬ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•¨μœΌλ‘œμ¨, κΈ°λ³Έ μžλ£Œν˜•μ˜ 객체λ₯Ό μ œκ³΅ν•˜λŠ” ν΄λž˜μŠ€μ΄λ‹€.
    • class
      • Class μžλ£Œν˜•μ˜ λ‹€μ–‘ν•œ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄ 클래슀의 이름을 κ°€μ Έμ˜¬ 수 μžˆλ‹€.
      • getClass, {ClassName}.class , Class.forName
      • 이 쀑 Class.forName 은 λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λ˜λŠ” λ¬Έμžμ—΄μ„ 톡해 클래슀의 동적 λ‘œλ”©μ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ—, μœ μ—°ν•œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

2023.01.31

ν•™μŠ΅ν•  λ‚΄μš©

  • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬
    • μ œλ„€λ¦­
    • Collection & Map μΈν„°νŽ˜μ΄μŠ€
  • List μΈν„°νŽ˜μ΄μŠ€
    • ArrayList & Vector 클래슀
    • LinkedList 클래슀
    • μŠ€νƒ & 큐
    • Iterator

ν•™μŠ΅ν•œ λ‚΄μš©

  • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬
    • μ œλ„€λ¦­
      • ν•˜λ‚˜μ˜ μ°Έμ‘°ν˜•μ΄ μ•„λ‹Œ μ—¬λŸ¬ μ°Έμ‘°ν˜•μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ 선언함
      • μ œλ„€λ¦­μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ <T> 에 μ„ μ–Έλœ μžλ£Œν˜•μ— 따라 λ§žμΆ”μ–΄ μ»΄νŒŒμΌν•˜λ―€λ‘œ, ν˜•λ³€ν™˜μ„ ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
      • <T extends {ClassName}> 의 ν˜•νƒœλ‘œ μ œλ„€λ¦­μ— μ‚¬μš© κ°€λŠ₯ν•œ μžλ£Œν˜•μ— μ œν•œμ„ λ‘˜ 수 μžˆλ‹€.
      • <> 이것을 닀이아λͺ¬λ“œ μ—°μ‚°μž 라고 λΆ€λ₯΄λ©°, μ—°μ‚°μžλ§Œ μ‚¬μš©ν•˜κ³  μΈμŠ€ν„΄μŠ€μ˜ μžλ£Œν˜•μ„ λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ μ»΄νŒŒμΌλŸ¬λŠ” ν• λ‹Ήλ˜λŠ” 클래슀의 μžλ£Œν˜•μ„ 보고 μΈμŠ€ν„΄μŠ€μ˜ μžλ£Œν˜•μ„ μœ μΆ”ν•  수 μžˆλ‹€.
    • 자료ꡬ쑰
      • μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬λ₯Ό 자료ꡬ쑰 라고 ν•˜λ©°, μœ μ§€ 및 κ°œλ°œμ— μ‚¬μš©ν•  자료λ₯Ό μ–΄λ–€ ꡬ쑰둜 관리할지 λͺ…μ‹œν•΄λ†“μ€ 것을 λ§ν•œλ‹€.
      • Collection
        • List(μˆœμ„œκ°€ μžˆλŠ” 자료, 쀑볡 ν—ˆμš©)
          • ArrayList
            • Stack, Queue
            • 객체 μˆœμ„œλ₯Ό 기반으둜 순차적 자료 관리λ₯Ό κ΅¬ν˜„ν•  λ•Œ μ‚¬μš©
            • Vector와 같이 동기화가 ν•„μš”ν•˜λ‹€λ©΄ [synchronizedList](https://paciencia.tistory.com/31)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„ μ–Έν•˜λ©΄ 됨
          • Vector
            • ArrayList μ™€μ˜ 차이점 β†’ 두 개 μ΄μƒμ˜ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— Vectorλ₯Ό μ‚¬μš©ν•  λ•Œμ—λ„ μ‹€ν–‰ μˆœμ„œλ₯Ό 보μž₯함
            • 동기화 β†’ JAVA의 μž‘μ—… λ‹¨μœ„λ₯Ό μŠ€λ ˆλ“œλΌ ν•˜λ©°, 두 개 μ΄μƒμ˜ μŠ€λ ˆλ“œ(λ©€ν‹°μŠ€λ ˆλ“œ)λ₯Ό μ‚¬μš© ν•  λ•Œ 였λ₯˜ μ˜ˆλ°©μ„ μœ„ν•΄ 두 μŠ€λ ˆλ“œκ°€ ν•œ λ©”λͺ¨λ¦¬μ— λ™μ‹œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 μˆœμ„œλ₯Ό λ§žμΆ”λŠ” 것
            • 동기화 μž‘μ—… λ•Œλ¬Έμ— μ†λ„λŠ” ArrayList보닀 λŠλ¦¬λ‹€.
          • LinkedList
            • 물리적 λ©”λͺ¨λ¦¬λŠ” λ–¨μ–΄μ ΈμžˆμœΌλ‚˜, 각 μš”μ†Œκ°€ λ‹€μŒ μš”μ†Œμ˜ μ£Όμ†Œκ°’μ„ κ°€μ§€κ³ μžˆλ‹€.
            • Aβ†’[data, BAdress], Bβ†’[data, CAdress] 의 ν˜•νƒœμ΄λ‹€.
            • 직접적인 자료 연결을 ν•˜μ§€ μ•Šμ•„λ„ 되기 λ•Œλ¬Έμ— μš”μ†Œμ˜ μΆ”κ°€, μ‚­μ œκ°€ ArrayList보닀 λΉ λ₯΄λ‹€.
            • ν•˜μ§€λ§Œ, i번째 μš”μ†Œλ₯Ό νƒμƒ‰ν•˜λŠ” 경우, μΈλ±μŠ€κ°€ 정해진 ArrayListκ°€ 훨씬 λΉ λ₯΄λ©°, 자료 변동이 λ§Žμ€ κ²½μš°μ—λ§Œ ν™œμš©ν•˜λŠ” 것이 μ’‹λ‹€.
        • Set(μˆœμ„œκ°€ μ—†λŠ” 자료, 쀑볡 ν—ˆμš©ν•˜μ§€ μ•ŠμŒ)
          • μˆœμ„œκ°€ μ—†κΈ° λ•Œλ¬Έμ— Iteratorμƒμ„±μžλ₯Ό ν™œμš©ν•˜μ—¬ λͺ¨λ“  μš”μ†Œμ˜ μˆœνšŒκ°€ κ°€λŠ₯ν•˜λ‹€.
          • HashSet
            • μžλ£Œκ°€ μž…λ ₯된 μˆœμ„œλŒ€λ‘œ 좜λ ₯λ˜μ§€ μ•ŠμœΌλ©°, 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
          • TreeSet
            • 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠμœΌλ©°, 좜λ ₯ μ‹œ 값을 μ •λ ¬ν•œλ‹€.
              • μ •λ ¬ μ‹œ 이진 트리λ₯Ό μ‚¬μš©ν•œλ‹€.
              • μš”μ†Œλ₯Ό μΆ”κ°€ν•  λ•Œ μ •λ ¬ 기쀀을 κ΅¬ν˜„ν•˜λŠ” Comparable, Comparator μΈν„°νŽ˜μ΄μŠ€κ°€ κ΅¬ν˜„λ˜μ–΄μ•Ό ν•œλ‹€.
              • Comparable β†’ compareTo λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•΄ μ‚¬μš©ν•˜λ©° 인자둜 받은 객체와 this λ₯Ό λΉ„κ΅ν•˜μ—¬ μ •λ ¬ν•œλ‹€.
              • Comparator β†’ compare λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•΄ μ‚¬μš©ν•˜λ©°, 두 인자λ₯Ό λ°›μ•„ λΉ„κ΅ν•˜λ©° μ •λ ¬ν•œλ‹€.
                • TreeSetμƒμ„±μžμ— Comparatorλ₯Ό κ΅¬ν˜„ν•  객체λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ 전달
      • Map
        • 킀와 κ°’μœΌλ‘œ λΆ„λ₯˜λ˜λŠ” 자료λ₯Ό 관리(ν‚€λŠ” 쀑볡될 수 μ—†μœΌλ©°, 값은 쀑볡될 수 μžˆλ‹€.)
        • Hashtable
          • Vectorν΄λž˜μŠ€μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ, 동기화λ₯Ό μ œκ³΅ν•˜λ©°, ν•΄λ‹Ή κΈ°λŠ₯을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ HashMap을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€.
        • HashMap
          • ν•΄μ‹œ λ°©μ‹μœΌλ‘œ 자료λ₯Ό κ΄€λ¦¬ν•˜λ©°, ν•΄μ‹œ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ 자료의 검색 속도λ₯Ό λΉ λ₯΄κ²Œ ν•  수 μžˆλ‹€.
        • TreeMap
          • TreeSetκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ 이진 트리λ₯Ό μ‚¬μš©ν•˜λ©°, Comparableν˜Ήμ€ ComparatorμΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•΄μ•Όν•œλ‹€.

2023.02.01

ν•™μŠ΅ν•  λ‚΄μš©

  • λ‚΄λΆ€ 클래슀
    • 정적 λ‚΄λΆ€ 클래슀
    • 지역 λ‚΄λΆ€ 클래슀
    • μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€ 클래슀
    • 읡λͺ… λ‚΄λΆ€ 클래슀
  • λžŒλ‹€μ‹
    • ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€
    • 읡λͺ… 객체

ν•™μŠ΅ν•œ λ‚΄μš©

  • λ‚΄λΆ€ 클래슀
    • λ‚΄λΆ€ ν΄λž˜μŠ€λŠ” μ™ΈλΆ€ ν΄λž˜μŠ€κ°€ λ¨Όμ € μƒμ„±λ˜μ–΄μ•Ό μ‚¬μš©ν•  수 있으며, μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€ 클래슀의 λ©”μ„œλ“œλŠ” μ™ΈλΆ€ 클래슀의 λ©”μ„œλ“œκ°€ 호좜될 λ•Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
    • private으둜 μ„ μ–Έλ˜μ—ˆλ‹€λ©΄ 클래슀 외뢀에선 μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.
  • 정적 λ‚΄λΆ€ 클래슀
    • μ™ΈλΆ€ 클래슀 생성과 λ¬΄κ΄€ν•˜κ²Œ λ‚΄λΆ€ 클래슀 μ‚¬μš©μ΄ κ°€λŠ₯ν•΄μ•Όν•˜λ©°, 정적 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€λ©΄ 정적 λ‚΄λΆ€ ν΄λž˜μŠ€μ— staticμ˜ˆμ•½μ–΄λ‘œ ν•„μš”ν•œ μ™ΈλΆ€ 클래슀λ₯Ό μ„ μ–Έν•˜λ©΄ λœλ‹€.
  • 지역 λ‚΄λΆ€ 클래슀
    • λ©”μ„œλ“œ 내뢀에 Runnable μΈν„°νŽ˜μ΄μŠ€λ‘œ μ„ μ–Έλ˜λ©°, λ°˜λ“œμ‹œ 클래슀 내뢀에 run을 μ˜€λ²„λΌμ΄λ”© ν•΄ μ‚¬μš©ν•΄μ•Όν•œλ‹€.
  • 읡λͺ… λ‚΄λΆ€ 클래슀
    • 말 κ·ΈλŒ€λ‘œ μ™ΈλΆ€ 클래슀 λ‚΄ λ©”μ„œλ“œμ˜ λ°˜ν™˜κ°’μ„ new Runnable 둜 μ„ μ–Έν•˜λ©°, 클래슀 끝에 ;λ₯Ό λΆ™μ—¬ λ§ˆλ¬΄λ¦¬ν•œ 읡λͺ… 클래슀λ₯Ό λ§ν•œλ‹€.
  • λžŒλ‹€μ‹
    • μžλ°”μ˜ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° 방식을 λžŒλ‹€μ‹μ΄λΌκ³  ν•œλ‹€.

      int add(int x, int y) {
      	return x + y
      }
      
      (int x, int y) -> {return x + y;} // μœ„ 식과 같은 λ°˜ν™˜κ°’μ„ κ°–λŠ”λ‹€.
    • μžλ°”μ—μ„  μ°Έμ‘° λ³€μˆ˜ 없이 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  수 μ—†κΈ° λ•Œλ¬Έμ— λžŒλ‹€μ‹μ€ ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€κ³  ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ μš©ν•œ 클래슀 λ‚΄μ—μ„œ μ‚¬μš©λ˜μ–΄μ•Ό ν•œλ‹€.

    • @FunctionalInterfaceμ• λ…Έν…Œμ΄μ…˜μ„ ν™œμš©ν•˜λ©΄, ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€ λΌλŠ” 의미λ₯Ό λ‚˜νƒ€λ‚΄λ―€λ‘œ, λ©”μ„œλ“œλ₯Ό λ‘κ°œ 이상 μΆ”κ°€ν•  μ‹œ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

2023.02.02

ν•™μŠ΅ν•  λ‚΄μš©

  • 슀트림
    • reduce()
  • μ˜ˆμ™Έ 클래슀
    • 였λ₯˜ & μ˜ˆμ™Έ
  • μ˜ˆμ™Έ 처리
    • try-catch
    • try-catch-finally
    • try-with-resources
  • μ˜ˆμ™Έ 미루기
    • throws
    • 닀쀑 μ˜ˆμ™Έμ²˜λ¦¬
  • μ‚¬μš©μž μ •μ˜ μ˜ˆμ™Έ
  • μžλ°” μž…μΆœλ ₯
    • 슀트림
  • ν‘œμ€€ μž…μΆœλ ₯
    • System.in
  • λ°”μ΄νŠΈ λ‹¨μœ„ 슀트림
    • InputStream
    • FileInputStream
    • OutputStream
    • FileOutputStream
  • 문자 λ‹¨μœ„ 슀트림
    • Reader
    • FileReader
    • Writer
    • FileWriter
  • 보쑰슀트림
  • 직렬화
    • 역직렬화
  • μž…μΆœλ ₯ 클래슀
    • File클래슀
    • RandomAccessFile 클래슀

ν•™μŠ΅ν•œ λ‚΄μš©

  • 슀트림
    • μŠ€νŠΈλ¦Όμ΄λž€, λ°°μ—΄ μš”μ†Œλ₯Ό νŠΉμ • 기쀀에 따라 μ •λ ¬ν•˜κ±°λ‚˜, 일뢀 데이터λ₯Ό ν•„ν„° ν•˜λŠ” κΈ°λŠ₯ 등을 미리 κ΅¬ν˜„ν•΄λ†“μ€ 클래슀λ₯Ό μ˜λ―Έν•œλ‹€.
    • Arrays.stream(arrName), {arrayName}.stream() 의 ꡬ쑰둜 μƒμ„±λ˜λ©°, JS의 filter, map, forEach와 같은 문법을 μ‚¬μš©ν•œλ‹€.
    1. ν•œ 번 μƒμ„±ν•˜κ³  μ‚¬μš©ν•œ μŠ€νŠΈλ¦Όμ€ μ†Œλͺ¨λ˜μ–΄ μž¬μ‚¬μš©μ΄ λΆˆκ°€
    2. 슀트림의 μ—°μ‚°μœΌλ‘œ κΈ°μ‘΄ μžλ£Œκ°€ λ³€κ²½λ˜μ§„ μ•ŠμŒ
  • μ˜ˆμ™Έ 클래슀
    • 였λ₯˜
      • μ½”λ“œ μž‘μ„± 쀑 λ°œμƒν•˜λŠ” 컴파일 였λ₯˜
      • μ‹€ν–‰ 쀑 μ€‘μ§€λ˜λŠ” μ‹€ν–‰ 였λ₯˜
    • μ˜ˆμ™Έ
      • ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ 해결이 κ°€λŠ₯ν•œ 문제
      • μ΅œμƒμœ„ ν΄λž˜μŠ€λŠ” Exception
      • try-catch문을 μ‚¬μš©ν•˜μ—¬ 처리
      • μ˜ˆμ™Έ μ²˜λ¦¬λŠ” ν”„λ‘œκ·Έλž¨μ΄ 비정상 μ’…λ£Œλ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° λ•Œλ¬Έμ— 맀우 μ€‘μš”ν•˜λ‹€.
      • μ‚¬μš©ν•œ μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€λŠ” λ°˜λ“œμ‹œ λ‹«μ•„μ£Όμ–΄μ•Ό ν•˜λ©°(close) try-catch-finally문을 μ΄μš©ν•˜μ—¬ λ¦¬μ†ŒμŠ€λ₯Ό μ’…λ£Œμ‹œν‚€λ©΄ λœλ‹€.
      • try-with-resources문을 μ‚¬μš©ν•˜λ©΄ λ‚΄λΆ€μ—μ„œ μ‚¬μš©λœ λ¦¬μ†ŒμŠ€λŠ” μžλ™μœΌλ‘œ closeλœλ‹€.
        AutoCloseable을 μΈν„°νŽ˜μ΄μŠ€λ‘œ μƒμ„±ν•œ ν›„ closeλ©”μ„œλ“œλ₯Ό Overrideν•΄ λ§Œλ“  ν›„ try-catchλ¬Έμ—μ„œ μ„ μ–Έν•˜λ©΄, AutoCloseκ°€ λœλ‹€.
      • try-catch문은 μ„ μ–Έλœ μˆœμ„œλŒ€λ‘œ κ²€μ‚¬ν•˜κΈ° λ•Œλ¬Έμ— Exception처럼 μ΅œμƒμœ„ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό λ¨Όμ € μ„ μ–Έν•œλ‹€λ©΄, 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλ‹€.
      • μ‚¬μš©μž μ •μ˜ μ˜ˆμ™Έ
        • extends μ˜ˆμ•½μ–΄λ‘œ Exception을 상속받아 superλ©”μ„œλ“œλ‘œ μ‚¬μš©μž μ •μ˜ μ˜ˆμ™Έλ₯Ό κ΅¬ν˜„ν•œλ‹€.
    • 슀트림
      • λͺ¨λ“  μž…μΆœλ ₯은 μŠ€νŠΈλ¦Όμ„ 톡해 이루어짐
      • μž…μΆœλ ₯ μž₯μΉ˜μ™€ λ¬΄κ΄€νžˆ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ 제곡
        • 기반 슀트림
          • μž…λ ₯ 슀트림
          • 좜λ ₯ 슀트림
          • Console
          • Scanner
          • FileInput
            • νŒŒμΌμ„ 좜λ ₯ν•˜λŠ” 슀트림 μž…λ‹ˆλ‹€.
          • FileOutput
            • νŒŒμΌμ„ μž…λ ₯ν•˜λŠ” 슀트림 μž…λ‹ˆλ‹€.
            • μž…λ ₯된 숫자λ₯Ό ν•΄λ‹Ή μ•„μŠ€ν‚€ μ½”λ“œλ‘œ 생성함
          • Reader
            • ν•œκΈ€μ„ λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ 읽게되면 깨질 수 있기 λ•Œλ¬Έμ— ReaderμŠ€νŠΈλ¦Όμ„ ν™œμš©ν•΄μ•Όν•œλ‹€.
          • Writer
        • 보쑰슀트림
          • μ˜ˆμ‹œ, InputStreamReaderλŠ” 보쑰슀트림으둜 기반 슀트림인 InputStream을 λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„ μƒμ„±λœλ‹€λ©΄, λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ 읽은 λ‚΄μš©μ„ 문자둜 λ³€ν™˜ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— ν•œκΈ€λ„ 읽을 수 μžˆλ‹€.
          • Bufferd 슀트림
            • μž…μΆœλ ₯이 ν•œ λ°”μ΄νŠΈλ‚˜ 문자 λ‹¨μœ„λ‘œ 이루어지면 μ„±λŠ₯ κ°μ†Œ, λ°°μ—΄ 및 λ¬Έμžμ—΄λ‘œ μž…μΆœλ ₯을 μ΄λ£¨μ–΄μ§€κ²Œ ν•˜λŠ” 슀트림
            • μ‹€μ œ 300MB μ •λ„μ˜ μ••μΆ• νŒŒμΌμ„ λ°”μ΄νŠΈλ‘œ λ³΅μ‚¬ν•˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό ν•œ κ²°κ³Ό 300λ°° κ°€λŸ‰ Buffered 슀트림이 빨랐음
        • 직렬화
          • μΈμŠ€ν„΄μŠ€μ˜ νŠΉμ • μ‹œμ  μƒνƒœλ₯Ό μ €μž₯ν•˜κ±°λ‚˜ λ„€νŠΈμ›Œν¬λ‘œ μ „μ†‘ν•˜λŠ” 것
          • μΈμŠ€ν„΄μŠ€ λ‚΄μš©μ„ 연속 슀트림으둜 λ§Œλ“€μ–΄ νŒŒμΌμ— μ“°κ±°λ‚˜ λ„€νŠΈμ›Œν¬λ‘œ 전솑할 수 있게 함
          • 직렬화 ν•˜κ² λ‹€λŠ” μ„ μ–ΈμœΌλ‘œ Object implements Serializable을 μ„ μ–Έν•΄μ•Όν•œλ‹€.
        • 역직렬화
          • μ €μž₯된 λ‚΄μš©μ΄λ‚˜ 전솑받은 λ‚΄μš©μ„ λ³΅μ›ν•˜λŠ” 것

2023.02.03

ν•™μŠ΅ν•  λ‚΄μš©

  • 볡슡 및 λΆ€μ‘±ν•œ λ‚΄μš© 보좩

ν•™μŠ΅ν•œ λ‚΄μš©

  • TIL

πŸ’šκΉƒ μ €μž₯μ†Œ

kwb020312의 Github Repository

πŸ’™ν›„κΈ°

λ„ˆλ¬΄λ„ˆλ¬΄ μžμ„Ένžˆ μ„€λͺ…λ˜μ–΄μžˆκ³ , 책을 읽어보며 처음으둜 μ•„λ¬΄λŸ° μ—λŸ¬ 없이 μ™„λ…ν–ˆλ‹€.

μ—λŸ¬κ°€ λ‚  수 μžˆλŠ” 뢀뢄을 μ„¬μ„Ένžˆ μ•Œλ €μ£Όμ…”μ„œ κ°œλ°œμ—λ§Œ λͺ°λ‘ν•  수 μžˆλŠ” μ‹œκ°„μ΄μ˜€λ‹€.

κ°•μΆ”!

profile
λ‚΄ 지식을 κ³΅μœ ν•  수 μžˆλŠ” λŒ€λ‹΄ν•¨

0개의 λŒ“κΈ€