π JAVA

int μμ λμ μ΄κ±° νμ μ μ¬μ©νλΌ - [6μ₯. μ΄κ±° νμ κ³Ό μ λν μ΄μ (μμ΄ν 34)] - (1)
μλ°λ₯Ό μ΄μ©νμ¬ μ½λ©μ νλ€ λ³΄λ©΄ μ μ μ΄κ±° ν¨ν΄(int enum pattern)κ³Ό μ΄κ±° νμ (enum type)μ μ¬μ©ν΄ λ³Έ μ μ΄ μμ κ²μ΄λ€. μ΄λ² κΈμμλ μ μ μ΄κ±° ν¨ν΄μ λ¨μ λ€μ μ΄ν΄λ³΄κ³ , μ μ΄κ±° νμ μ μ¬μ©ν΄μΌ νλμ§ μμλ³΄κ³ μ νλ€. κ·Έλ¦¬κ³ κΈ°λ³Έμ μΈ μ΄κ±° νμ μ μ¬μ©λ²λ μμλ³Ό κ²μ΄λ€. π 1. μ μ μ΄κ±° ν¨ν΄ (int enum pattern) public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ..

μλ°μ μ»΄νμΌ κ³Όμ
μλ°λ JVM(Java Virtual Machine) λλΆμ OSμ λ 립μ μΈ νΉμ§μ κ°μ§κ³ μλ€. JVMμ μ΄λ ν κΈ°λ₯ λλ¬Έμ OSμ λ 립μ μΌλ‘ μ€νμν¬ μ μλμ§ μλ°μ μ»΄νμΌ κ³Όμ μ ν΅ν΄ μμ보μ. π 1. μ»΄νμΌ κ³Όμ μλ°μ μ»΄νμΌ κ³Όμ μ λ€μκ³Ό κ°λ€. κ°λ°μκ° μμ±ν μλ° μμ€νμΌ(*. java)μ μλ° μ»΄νμΌλ¬(Java Compiler)κ° λ°μ΄νΈνμΌ(*.class)λ‘ μ»΄νμΌνλ€. (CPUκ° μ΄ν΄ν μ μλ μΈμ΄μΈ λ°μ΄λ리 μ½λκ° μλλΌ JVMμ΄ μ΄ν΄ν μ μλ λ°μ΄νΈ μ½λλ₯Ό κ°μ§ λ°μ΄νΈ νμΌλ‘ λ³ννλ€.) ν΄λμ€ λ‘λ(Class Loader)λ₯Ό ν΅ν΄ λ°μ΄νΈ νμΌ(*.class)λ€μ JVMμ μ¬λ¦°λ€. JVMμ μλ λ°μ΄νΈ νμΌ(*.class)λ€μ μ€ν μμ§(Execution Engine)μ μΈν°ν..

μΆμν΄λμ€(Abstract Class) VS μΈν°νμ΄μ€(Interface)
μ§κΈκΉμ§ μΆμν΄λμ€μ μΈν°νμ΄μ€λ₯Ό μ΄ν΄λ³΄μλ€. μΆμν΄λμ€μ μΈν°νμ΄μ€λ κ°κ° κ³ μ ν λͺλͺ νΉμ§μ κ°μ§κ³ μμ§λ§, "μΆμ λ©μλλ₯Ό ν΅ν΄ μμ/ꡬνμ ν΅ν λ©μλ κ°μ ꡬν κ·μΉμ κ°μ§λ μΆμν ν΄λμ€"λΌλ μ μμ λ§€μ° λΉμ·νλ€λ λλμ λ°μ κ²μ΄λ€. λν, 'κ·Έλ λ€λ©΄ λͺ¨λ λ©μλλ₯Ό μΆμ λ©μλλ‘ λ§λ€μ΄μ μ¬μ©νλ©΄ μΆμ ν΄λμ€κ° μΈν°νμ΄μ€ μν ν μ μλλ° μ κ΅³μ΄ μΈν°νμ΄μ€κ° μ‘΄μ¬νλ κ±ΈκΉ? 'λΌλ μλ¬Έλ μκΈΈ μ μλ€. κΈ°λ₯μ μΈ μΈ‘λ©΄μ λ€ μ μΈνκ³ , λ κ°λ₯Ό λλμ΄μ μ¬μ©νλ κ°μ₯ ν° μ΄μ λ μ¬μ© λͺ©μ κ³Ό μ¬μ© μκΈ°κ° λ€λ₯΄λ€λ κ²μ΄λ€. κ·Έλ¬λ―λ‘ 'μΆμ ν΄λμ€μ μΈν°νμ΄μ€μ μ¬μ© λͺ©μ κ³Ό μ¬μ© μκΈ°μ μ°¨μ΄'λ₯Ό μμλ³΄κ³ , 'κΈ°λ₯μ μΈ μ°¨μ΄μ 'μ λν΄μλ μΆκ°μ μΌλ‘ μ λ¦¬ν΄ λ³΄λλ‘ νμ. π 1. μ¬μ© λͺ©μ κ³Ό μ¬μ©..

μΈν°νμ΄μ€(Interface)
JDK1.8λΆν° λν΄νΈ λ©μλμ static λ©μλλ μΈν°νμ΄μ€μμ μ¬μ©ν μ μκ² λμλ€. μΌλ¨μ JDK1.8 μ΄μ μ μΈν°νμ΄μ€μ λν΄μ λ¨Όμ μ΄ν΄λ³΄κ³ , κ·Έλ¦¬κ³ JDK1.8μμ μΆκ°λ κΈ°λ₯(λν΄νΈ λ©μλ, static λ©μλ)κ³Ό Java9λΆν° μ¬μ©ν μ μλ private λ©μλμ λν΄μ μ΄ν΄λ³΄λ κ²μΌλ‘ νμ. π 1. μΈν°νμ΄μ€λ μΈν°νμ΄μ€λ μΌμ’ μ μΆμν΄λμ€μ΄λ€. μΈν°νμ΄μ€λ μΆμν΄λμ€μ²λΌ μΆμλ©μλλ₯Ό κ°μ§λ§ μΆμν΄λμ€λ³΄λ€ μΆμν μ λκ° λμμ μΆμν΄λμ€μ λ¬λ¦¬ λͺΈν΅μ κ°μΆ μΌλ° λ©μλ λλ λ©€λ²λ³μλ₯Ό ꡬμ±μμΌλ‘ κ°μ§ μ μλ€. μ€μ§ μΆμλ©μλμ μμλ§μ λ©€λ²λ‘λ§ κ°μ§ μ μμΌλ©°, κ·Έ μΈμ λ€λ₯Έ μ΄λ ν μμλ νμ©νμ§ μλλ€. μΈν°νμ΄μ€λ μΆμν΄λμ€μ²λΌ μμ±λμ§ μμ λΆμμ ν κ²μ΄κΈ° λλ¬Έμ κ·Έ μ체..

μΆμ ν΄λμ€(Abstract Class)
π 1. μΆμν΄λμ€λ? public abstract class Player { abstract void play(); abstract void stop(); } ν΄λμ€λ₯Ό μ€κ³λλΌκ³ νλ€λ©΄, μΆμν΄λμ€(Abstract Class)λ λ―Έμμ± μ€κ³λλΌκ³ ν μ μλ€. μ¬κΈ°μ λ§νλ λ―Έμμ±μ λ¨μ§ λ―Έμμ± λ©μλ(μΆμ λ©μλ)λ₯Ό ν¬ν¨νκ³ μλ€λ μλ―Έμ΄λ€. λ―Έμμ± μ€κ³λλ‘ μμ±λ μ νμ λ§λ€ μ μλ―μ΄ μΆμ ν΄λμ€λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€. μΆμ ν΄λμ€λ μμμ ν΅ν΄μ μμν΄λμ€μ μν΄μλ§ μμ±λ μ μλ€. μΆμ ν΄λμ€ μ체λ‘λ ν΄λμ€λ‘μμ μν μ λ€ λͺ»νμ§λ§, μλ‘μ΄ ν΄λμ€λ₯Ό μμ±νλ λ° μμ΄μ λ°νμ΄ λλ μ‘°μ ν΄λμ€λ‘μ μ€μν μλ―Έλ₯Ό κ°λλ€. μΆμ ν΄λμ€λ ν΄λμ€μ μΆμνλ₯Ό μ λͺ©μμΌ λ³΄λ€ κ΅¬μ‘°μ μ΄κ² κ°μ²΄λ₯Ό..

νμ μμ μ΄μ’ 컨ν μ΄λλ₯Ό κ³ λ €νλΌ - [5μ₯. μ λ€λ¦(μμ΄ν 33)]
1. νμ μμ μ΄μ’ 컨ν μ΄λ π νμ μμ μ΄μ’ (Heterogeneous) 컨ν μ΄λλ ν νμ μ κ°μ²΄λ§ λ΄μ μ μλ 컨ν μ΄λκ° μλ, μ¬λ¬ λ€λ₯Έ νμ (μ΄μ’ )μ λ΄μ μ μλ νμ μμ ν 컨ν μ΄λλ₯Ό λ§νλ€. μ§κΈκΉμ§ μ°λ¦¬κ° νν μκ³ μλ 컨ν μ΄λλ ν κ°μ§ νμ λ§ μ¬μ©ν μ μλ 컨ν μ΄λλ€. public static void main(String[] args) { Set names = new HashSet(); names.add("amenable"); // names.add(1); // λΆκ°λ₯ Set numbers = new HashSet(); numbers.add(1); // numbers.add("amenable"); // λΆκ°λ₯ } νμ§λ§, κ²½μ°μ λ°λΌμλ μ΄μ’ 컨ν μ΄λ(= κ°μ μ’ μ΄ μλ νμ ..

μ λ€λ¦κ³Ό κ°λ³μΈμλ₯Ό ν¨κ» μΈ λλ μ μ€νλΌ - [5μ₯. μ λ€λ¦(μμ΄ν 32)]
1. κ°λ³μΈμ & μ λ€λ¦ πͺ κ°λ³μΈμ(varargs)λ 맀κ°λ³μλ‘ λ€μ΄μ€λ κ°μ κ°μμ μκ΄μμ΄ λμ μΌλ‘ μΈμλ₯Ό λ°μμ κΈ°λ₯νλλ‘ ν΄μ£Όλ λ¬Έλ²μ λ§νλ€. public PrintStream printf(String format, Object ... args) { return format(format, args); } κ°λ³μΈμ λ©μλλ₯Ό νΈμΆνλ©΄ κ°λ³μΈμλ₯Ό λ΄κΈ° μν λ°°μ΄μ΄ μλμΌλ‘ νλ λ§λ€μ΄μ§λ€. λ§μ½ λ€μκ³Ό κ°μ΄ μ λ€λ¦κ³Ό κ°λ³μΈμλ₯Ό ν¨κ» μ¬μ©νλ©΄ μ΄λ»κ² λ κΉ? static void dangerous(List... stringLists) { } μ΄ κ²½μ°μλ κ°λ³μΈμ λ©μλκ° νΈμΆλκΈ° λλ¬Έμ κ°λ³μΈμλ₯Ό λ΄κΈ° μν λ°°μ΄μ΄ μλμΌλ‘ λ§λ€μ΄μ§λ€. μ¦, μ λ€λ¦ λ°°μ΄μ΄ λ§λ€μ΄μ§λ κ²μ΄λ€. μΌλ°μ μΌλ‘λ μ λ€λ¦ λ°°μ΄μ ..

νμ μ μμΌλμΉ΄λλ₯Ό μ¬μ©ν΄ API μ μ°μ±μ λμ΄λΌ - [5μ₯. μ λ€λ¦(μμ΄ν 31)]
1. PECS π PECS(Producer-Extends, Consumer-Super)λ 맀κ°λ³μν νμ Tκ° μμ°μλΌλ©΄ μλ null μΈμλ μ΄λ€ κ°λ λ£μ μ μκΈ° λλ¬Έμ΄λ€. κ·Έλμ μλμ κ°μ΄ λμ°λ―Έ λ©μλλ₯Ό λ°λ‘ μμ±ν΄μ μ¬μ©ν΄μΌ νλ€. public class Swap { public static void swap(List list, int i, int j) { swapHelper(list, i, j); } private static void swapHelper(List list, int i, int j){ list.set(i, list.set(j, list.get(i))); } } ν΄λΉ κΈμ λ°±κΈ°μ λμ 'μ΄νν°λΈ μλ° μλ²½ 곡λ΅'μ μ°Έκ³ νμμ΅λλ€.

μ΄μμ΄λ©΄ μ λ€λ¦ λ©μλλ‘ λ§λ€λΌ - [5μ₯. μ λ€λ¦(μμ΄ν 30)]
ν΄λμ€μ λ§μ°¬κ°μ§λ‘, λ©μλλ μ λ€λ¦μΌλ‘ λ§λ€ μ μλ€. μ λ€λ¦ λ©μλ 3κ°μ§λ₯Ό μ΄ν΄λ³΄λ©΄μ μ΄λ»κ² μ λ€λ¦ λ©μλλ₯Ό λ§λλμ§ μμ보μ. 1. 맀κ°λ³μν νμ μ λ°λ μ μ μ νΈλ¦¬ν° λ©μλ πΌ 맀κ°λ³μν νμ μ λ°λ μ μ μ νΈλ¦¬ν° λ©μλλ λ³΄ν΅ μ λ€λ¦μ΄λ€. (Collectionsμ μκ³ λ¦¬μ¦ λ©μλλ λͺ¨λ μ λ€λ¦μ΄λ€.) μ°μ , μ λ€λ¦μ μ¬μ©νμ§ μμ λ©μλλ₯Ό μ΄ν΄λ³΄μ public class Union { public static Set union(Set s1, Set s2) { Set result = new HashSet(s1); result.addAll(s2); return result; } } ν΄λΉ λ©μλλ μλμ μμμμ μ΄ν΄λ³Ό μ μλ κ²μ²λΌ μμ νμ§ μλ€. public static void main(S..

μ΄μμ΄λ©΄ μ λ€λ¦ νμ μΌλ‘ λ§λ€λΌ - [5μ₯. μ λ€λ¦(μμ΄ν 29)]
1. λ€μ΄κ°κΈ° μ πβοΈ μλμ Object κΈ°λ°μΌλ‘ λ§λ€μ΄μ§ Stack ν΄λμ€λ₯Ό μ΄ν΄λ³΄μ. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if(size == 0) throw new EmptyStackException(); Object resu..

λ°°μ΄λ³΄λ€λ 리μ€νΈλ₯Ό μ¬μ©νλΌ - [5μ₯. μ λ€λ¦(μμ΄ν 28)]
1. λ°°μ΄κ³Ό μ λ€λ¦ νμ μ μ°¨μ΄ π¦ π 1. λ°°μ΄μ 곡λ³μ΄κ³ , μ λ€λ¦μ λΆκ³΅λ³μ΄λ€. λ°°μ΄μ 곡λ³(Convariant)μ΄λ€. Subκ° Superμ νμ νμ μ΄λΌλ©΄ Sub[]λ λ°°μ΄ Super[]μ νμ νμ μ΄λ€. μ λ€λ¦μ λΆκ³΅λ³(Invariant)μ΄λ€. μλ‘ λ€λ₯Έ νμ Type1κ³Ό Type2κ° μμ λ, Listμ Listμ νμ νμ λ μλκ³ μμ νμ λ μλλ€. 곡λ³κ³Ό λΆκ³΅λ³ μ€ μ΄λ μͺ½μ΄ λ¬Έμ κ° μμκΉ? μ½λλ₯Ό ν΅ν΄ μμ보μ. public static void main(String[] args) { // λ°°μ΄ Object[] objectArray = new Long[1]; objectArray[0] = "νμ μ΄ λ¬λΌμ λ£μ μ μλ€."; // ArrayStoreException (λ°νμμ λ°μ) //..

μ λ€λ¦(Generics) - 곡λ³(Covariant), λΆκ³΅λ³(Invariant), λ°κ³΅λ³(Contravariant)
1. 곡λ³, λΆκ³΅λ³, λ°κ³΅λ³μ κ°λ π λ³μ±(Variance)μ΄λ νμ μ κ³μΈ΅ κ΄κ³μμ μλ‘ λ€λ₯Έ νμ κ°μ μ΄λ ν κ΄κ³κ° μλμ§λ₯Ό λνλ΄λ κ²μ΄λ€. λ³μ±μ 3κ°μ§ μ’ λ₯μΈ κ³΅λ³(Covariant), λΆκ³΅λ³(Invariant), λ°κ³΅λ³(Contravariant)μ λ€μκ³Ό κ°μ νΉμ±μ κ°μ§λ€. κ³΅λ³ Sκ° Tμ νμ νμ μ΄λ©΄, S[]λ T[]μ νμ νμ μ΄λ€. λΆκ³΅λ³ Listμ Listλ κ΄κ³κ° μλ€. λ°κ³΅λ³ Sκ° Tμ νμ νμ μ΄λ©΄, T[]λ S[]μ νμ νμ μ΄λ€. 2. μ λ€λ¦μ 곡λ³μ±μ΄ μλ€. β μλ°μμ λ°°μ΄μ 곡λ³μ΄κ³ , μ λ€λ¦μ λΆκ³΅λ³μ΄λ€. μ¦, κ°μ²΄ νμ μ κ΄κ³μμ Aκ° Bμ νμ νμ μΌ λ, λ°°μ΄ A[]λ B[]μ νμ νμ μ΄μ§λ§ Listsms Listμ νμ νμ μ΄ μλλ€. public stat..