π JAVA/μ£Όμ κ°λ

κ³΅λ³ λ°ννμ (Convariant Return Type)
1. μ μ π» κ³΅λ³ λ°ννμ μ΄λ μ¬μ μν λ©μλμ λ°ν νμ μ μμ ν΄λμ€μ λ©μλκ° λ°ννλ νμ μ νμ νμ μ΄ λ μ μλ€λ κ²μ΄λ€. κΈ°μ‘΄μ μ€λ²λΌμ΄λ©μ 'λ©μλμ μ΄λ¦', 'λ§€κ° λ³μμ κ°μ, νμ , μμ', 'λ¦¬ν΄ νμ 'μ΄ κ°μμΌ νλ€. νμ§λ§ JDK1.5λΆν° κ³΅λ³ λ°ννμ μ΄ μΆκ°λλ©΄μ μ€λ²λΌμ΄λ©μ ν λ λ€λ₯Έ λ¦¬ν΄ νμ μ κ°μ§ μ μκ² λμλ€. μ¬κΈ°μ λ€λ₯Έ νμ μ΄λ λΆλͺ¨ν΄λμ€μ μ μλ λ©μλμ λ¦¬ν΄ νμ μ μλΈνμ μ λ§νλ€. 2. ꡬν(JAVA) πΌ μ€λ²λΌμ΄λ©μμμ 리ν΄νμ μ λΆλͺ¨ν΄λμ€ λ¦¬ν΄ νμ μ μλΈνμ μ΄λ©΄ λλ€. μ΄ μ μ μ μν΄μ μ½λλ₯Ό 보μ. class Parent { Parent testMethod() { return this; } } class ChildA extends Parent ..

λ§μ»€ μΈν°νμ΄μ€ (Marker Interface)
1. μ μ π interface XXX { } λ§μ»€ μΈν°νμ΄μ€(Marker Interface)λ μ무 λ©μλλ μ μΈνμ§ μμ μΈν°νμ΄μ€λ€. ν΄λΉ μΈν°νμ΄μ€λ κ°μ²΄μ νμ κ³Ό κ΄λ ¨λ μ 보λ§μ μ κ³΅ν΄ μ£Όλ μν μ νλ€. κ·Έλμ μ»΄νμΌλ¬μ JVMμ λ§μ»€ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ κ°μ²΄μ λν μΆκ°μ μΈ μ 보λ₯Ό μ»μ μ μλ€. μ‘°κΈ λ κ°λ¨νκ² λ§νμλ©΄, λ§μ»€ μΈν°νμ΄μ€λ μμ μ ꡬννλ ν΄λμ€κ° νΉμ μμ±μ κ°μ§λ€λ κ²μ ννν΄ μ£Όλ κ²μ΄λ€. 2. μμλ₯Ό ν΅ν μ΄ν΄ π₯ λ§μ»€ μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€κ° νΉμ μμ±μ κ°μ§λ€λ κ²μ νμν΄ μ£Όλ μ΄μ λ 무μμΌκΉ? μλμ λλ¬Ό μμλ₯Ό ν΅ν΄ μμ보μ. κΈ°λ³Έ μ€μ μ μλμ κ°λ€. μμν΄λμ€μΈ Animalμ΄λΌλ ν΄λμ€κ° μλ€. Dog, Lion, Snake, Fish... λ± μ¬λ¬..

Parsing(νμ±) - CSV, XML, JSON
μ΄λ² κΈμμλ λ°μ΄ν°μ μ’ λ₯, Parsing(νμ±) & Parser(νμ), Parsingμ μ€μ μ¬μ© λ°©λ²μ μ΄ν΄λ³΄λλ‘ νμ. 1. CSV, XML, JSON π (1) CSV (Comma Separated Value) π± CSVλ λͺ κ°μ§ νλλ₯Ό μΌν(,)λ‘ κ΅¬λΆν ν μ€νΈ λ°μ΄ν° λ° ν μ€νΈ νμΌμ΄λ€. name,age,visitTime μ΅νλ,23,2023-01-28 μ΄κ΅¬λ¦,15,2023-01-29 κΉμ°,32,2023-01-30 (2) XML (eXtensible Markup Language) π³ XMLμ HTMLκ³Ό λ§€μ° λΉμ·ν λ¬Έμ κΈ°λ°μ λ§ν¬μ μΈμ΄(text-based markup language)μ΄λ€. νκ·Έλ₯Ό ν΅ν΄ λ°μ΄ν° νμμ μ μνλ€. XML νκ·Έλ HTML νκ·Έμ²λΌ 미리 μ μλμ΄ μμ§ μκ³ ,..

μ μΆλ ₯(I/O)(2) - μ§λ ¬ν(Serialization)
1. μ§λ ¬ν κ°λ π μ§λ ¬ν(Serialization)λ κ°μ²΄λ₯Ό λ°μ΄ν° μ€νΈλ¦ΌμΌλ‘ λ§λλ κ²μ λ§νλ€. μ¦, νμ¬ λ°μ΄ν°(structure, object)μ μνλ₯Ό μμμ μΌλ‘ μ μ₯νκ±°λ λ€λ₯Έ νκ²½μΌλ‘ μ λ¬(λ€νΈμν¬ ν΅μ λ±) νκΈ° μν΄ μ΄λ ν μ ν΄μ§ ν¬λ§·μΌλ‘ λ³ννλ κ³Όμ μ΄λ€. λ³νλ λ°μ΄ν°λ₯Ό λ€μ μλ λ°μ΄ν°λ‘ λ³ννλ κ³Όμ μ μμ§λ ¬ν(Deserialization)μ΄λΌκ³ νλ€. // μ§λ ¬νλ₯Ό νμ§ μμ κ²½μ° public class User{ private String name; private String id; String password; public User(String name, String id, String password) { this.name = name; this.id = id; this..

μ μΆλ ₯(I/O)(1) - λ Έλ μ€νΈλ¦Ό, 보쑰 μ€νΈλ¦Ό
ꡬ체μ μΈ λ΄μ©μ λ€μ΄κ°κΈ°μ μμ κΈ°λ³Έμ μΈ λ¨μ΄ 3κ°λ₯Ό μ΄ν΄λ³΄μ. I/Oλ Input/Ouputμ μ½μλ‘ μ λ ₯κ³Ό μΆλ ₯μ λνλΈλ€. λ Έλ(Node)λ 'λ°μ΄ν°μ μΆλ°μ§μ λͺ©μ μ§' λλ 'μ λ ₯κ³Ό μΆλ ₯μ λλ¨'μ΄λ€. λ°μ΄ν°λ₯Ό μ λ¬νκΈ° λ°μ΄ν°λ₯Ό μ΄λ°νλ λ° μ¬μ©λλ μ°κ²° ν΅λ‘κ° νμνλ° κ·Έκ²μ΄ μ€νΈλ¦Ό(Stream)μ΄λ€. μ΄λ² μ£Όμ μμλ μ μΆλ ₯μ κ°λ₯νκ² νλ λ Έλ μ€νΈλ¦Ό, μ΄λ₯Ό λμμ£Όλ 보쑰 μ€νΈλ¦Ό, κ·Έλ¦¬κ³ μ§λ ¬ν(Serialization)λ₯Ό μμ보μ. 1. λ Έλ μ€νΈλ¦Ό π΄ λ Έλ μ€νΈλ¦Όμ΄λ λ Έλμ μ°κ²°λ μ€νΈλ¦Όμ΄λ€. λ€μν λ Έλ μ€νΈλ¦Όλ€μ΄ μλλ° 3κ°μ§ 쑰건μΌλ‘ λΆλ₯λ₯Ό νμ¬ κ·Έκ²μ ν΄λΉνλ λ Έλμ€νΈλ¦Όμ μ¬μ©νλ©΄ λλ€. 3κ°μ§ λΆλ₯λ μλμ κ°λ€. λ°μ΄ν° νμ μ μ‘ν λ°μ΄ν° νμ μ΄ ByteμΈμ§ μλλ©΄ CharμΈμ§ ..

λλ€μ(Lambda Expression) - (2)
μμ κΈμ μ΄μ΄μ λλ€μμ μ΄ν΄λ³΄μ. μ΄λ²μλ java.util.function ν¨ν€μ§μ ν¨μν μΈν°νμ΄μ€μ λ©μλ μ°Έμ‘°μ λν΄μ μμλ³Ό κ²μ΄λ€. 1. ν¨μν μΈν°νμ΄μ€ π ν¨μν μΈν°νμ΄μ€μ λν μ€λͺ μ΄ νμνλ€λ©΄ μμ κΈμ μ°Έκ³ νκΈ°λ₯Ό λ°λλ€. μ¬κΈ°μλ java.util.functionμμ μ 곡νλ ν¨μν μΈν°νμ΄μ€μ μ’ λ₯μ μ¬μ©λ²μ λν΄μλ§ μμλ³΄κ³ μ νλ€. ν¨μν μΈν°νμ΄μ€ λ©μλ μ€λͺ Runnable void run() 맀κ°λ³μ X, λ°νκ° X Supplier T get() 맀κ°λ³μ X, λ°νκ° O Consumer void accept(T t) 맀κ°λ³μ O, λ°νκ° X Function R apply(T t) 맀κ°λ³μ O, λ°νκ° O Predicate boolean test(T t) 맀κ°λ³μ O, ..

λλ€μ(Lambda Expression) - (1)
JDK1.8λΆν° λλ€μ(Lambda Expression)μ μ¬μ©ν μ μκ² λμλ€. μ΄κ²μ μλ°μ λ§€μ° ν° λ³ν μ€μ νλμ΄λ€. μ΄λ² κΈμ ν΅ν΄ 'λλ€μμ κ°λ ', 'λλ€μ μμ±λ²', 'ν¨μν μΈν°νμ΄μ€'λ₯Ό μμ보μ. 1. λλ€μ(Lambda Expression) π£ λλ€μ(Lambda Expression)μ λ©μλλ₯Ό νλμ 'μ(expression)'μΌλ‘ ννν κ²μ΄λ€. μ΄λ₯Ό ν΅ν΄ μλ°λ κ°μ²΄μ§ν₯μΈμ΄μΈ λμμ ν¨μν μΈμ΄κ° λμλ€. μλλ λͺ λ Ήν νλ‘κ·Έλλ°κ³Ό μ μΈν νλ‘κ·Έλλ°μ λν κ°λ΅ν λ΄μ©μ΄λ€. μ΄λ₯Ό μκ³ λλ€μμ λ°°μ΄λ€λ©΄ λλ€μμ λ΄μ©μ΄ λ μ½κ² λ€κ°μ¬ κ²μ΄λ€. λͺ λ Ήν νλ‘κ·Έλλ° (⊃ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°) : ν΄λμ€μμ λ©μλλ₯Ό μ μνκ³ , νμν λ κ·Έ λ©μλλ₯Ό νΈμΆνλ λͺ λ Ήμ νμ¬ λμνλ κ²..

Comparableκ³Ό Comparator
public class Main { public static void main(String[] args) { char[] chArr = {'E', 'D', 'C', 'B', 'A'}; System.out.println("μ λ ¬ μ : " + Arrays.toString(chArr)); Arrays.sort(chArr); System.out.println("μ λ ¬ ν : " + Arrays.toString(chArr)); } } // μ λ ¬ μ : [E, D, C, B, A] // μ λ ¬ ν : [A, B, C, D, E] Arrays.sortλ₯Ό μ΄μ©νλ©΄ μμ κ°μ΄ μ λ ¬μ ν μ μλ€. μ λ ¬μ΄ κ°λ₯ν μ΄μ λ Comparableμ ꡬννκΈ° λλ¬Έμ΄λ€. μ΄λ² κΈμμλ 'Comparableκ³Ό Comparatorμ κ°λ '..

μμΈμ²λ¦¬(Exception Handling) - (2)
1. try-with-resourcesλ¬Έ β³ try (SomeResource resource = getResource()) { use(resource); } catch(Exception e) { ... } JDK1.7λΆν° try-with-resourcesλ¬Έμ΄ μΆκ°λμλ€. try-with-resourcesλ¬Έμ κ΄νΈ() μμ κ°μ²΄λ₯Ό μμ±νλ λ¬Έμ₯μ λ£μΌλ©΄, μ΄ κ°μ²΄λ λ°λ‘ close()λ₯Ό νΈμΆνμ§ μμλ tryλΈλμ λ²μ΄λλ μκ° μλμ μΌλ‘ close()κ° νΈμΆλλ€. κ·Έλ¦¬κ³ catchλΈλ λλ finallyλΈλμ΄ λ°λΌμ€κ² λλ€. μ΄λ try-with-resourcesλ₯Ό ν΅ν΄ μλμΌλ‘ κ°μ²΄μ close()κ° νΈμΆλ μ μμΌλ €λ©΄ ν΄λμ€κ° AutoCloseableμ΄λΌλ μΈν°νμ΄μ€λ₯Ό ꡬνν κ²μ΄μ΄μΌ νλ€. λν, ..

μμΈμ²λ¦¬(Exception Handling) - (1)
μλ°μμλ μ€ν μ(runtime) λ°μν μ μλ νλ‘κ·Έλ¨ μ€λ₯λ₯Ό 'μλ¬(Error)'μ 'μμΈ(Exception)'λ‘ κ΅¬λΆνλ€. μλ¬λ λ©λͺ¨λ¦¬ λΆμ‘±(OutOfMemoryError)μ΄λ μ€νμ€λ²νλ‘μ°(StackOverflowError)μ κ°μ΄ μΌλ¨ λ°μνλ©΄ 볡ꡬν μ μλ μ¬κ°ν μ€λ₯μ΄κ³ , μμΈλ λ°μνλλΌλ μμ΅λ μ μλ λΉκ΅μ λ μ¬κ°ν κ²μ΄λ€. μλ¬λ νλ‘κ·Έλ¨ μ½λμ μν΄μ μμ΅λ μ μκ³ μμΈλ μμ΅λ μ μμΌλ―λ‘, μμΈ μ²λ¦¬(Exception Handling)λ₯Ό ν΅ν΄ ν΄λΉ μν©μ μΈμνκ³ λμ²νλλ‘ νλ€. 1. μμΈ ν΄λμ€μ λΆλ₯ πΉ μμΈ ν΄λμ€μ κ³μΈ΅ ꡬ쑰λ ν¬κ² 3κ°μ§λ‘ λλμ΄ λ³Ό μ μλ€. μΌμͺ½μ μλ Error, νλμμΌλ‘ νμλ Checked Exception κ³μ΄, μ£Όν©μμΌλ‘ νμ..