μλ°μ νΉμ§ (WORA, JVM, GC)
1) WORA (Write Once Run Anywhere)
=> μλ° νλ‘κ·Έλ¨μ ν λ² μμ€μ½λλ₯Ό μμ±νκ³ λλ©΄
μ΄μ체μ μ μκ΄μμ΄ μ΄λμλ μ€ν κ°λ₯ν νΉμ§
=> κ° μ΄μ체μ λ§λ JVMμ μ€μΉνμ¬ κ°λ₯νκ² λ¨
2) JVM (Java Virtual Machine, μλ°κ°μλ¨Έμ )
=> κ°μμ CPU μν μ μννλ μλ°μ ν΅μ¬ κ΅¬μ± μμ
=> JVMλ§ μ§μ μ€μΉνλ κ²μ μλκ³
JVMμ ν¬ν¨νμ¬ μλ° νλ‘κ·Έλ¨ μ€νμ νμν λꡬλ₯Ό μ 곡νλ JRE,
JREμ ν¨κ» μλ° νλ‘κ·Έλ¨ κ°λ°μ νμν λꡬλ₯Ό μ 곡νλ JDKλ₯Ό μ€μΉ
3) Garbage Collector (G.C)
=> μλ°μμ λ©λͺ¨λ¦¬λ₯Ό κ΄λ¦¬νλ μν
(λ μ΄μ μ¬μ©λμ§ μλ κ°μ²΄λ₯Ό μλμΌλ‘ μ 리νλ μν μ μν)
μλ³μ κ·μΉ
1) 첫 κΈμ μ«μ μ¬μ© λΆκ°
2) νΉμλ¬Έμ '$', '_' λ§ μ¬μ© κ°λ₯
3) λμλ¬Έμ ꡬλ³
4) 곡백 μ¬μ© λΆκ°
5) ν€μλ(μμ½μ΄) μ¬μ© λΆκ°
--------------------------------
6) κΈΈμ΄ μ ν μμ
7) Camel-case (λννκΈ°λ²) μΌλ‘ λ³μλͺ
μμ±
8) μλ―Έμλ μ΄λ¦ μ¬μ©
κΈ°λ³Έ μλ£ν 8κ°μ§
----------------------------------------
1 2 4 8
μ μν byte short int long
μ€μν float double
λ¬Έμν char
λ
Όλ¦¬ν boolean
----------------------------------------
μλνλ³ν (μμ λ°μ΄ν°νμ
-> ν° λ°μ΄ν°νμ
)
κ°μ νλ³ν (ν° λ°μ΄ν°νμ
-> μμ λ°μ΄ν°νμ
)
(μ€λ²νλ‘μ° λ°μμ¬λΆ)
λ°°μ΄ (κ°μ λ°μ΄ν°νμ
μ μμ°¨μ (μ¬λ¬κ°)μΌλ‘ μ μ₯)
int[] arr = {1, 2, 3}; // (O)
int arr;
arr = {1, 2, 3}; (X)
arr = new int[3]; (O)
arr = new int[3]{1, 2, 3}; (X)
arr = new int[]{1, 2, 3}; (O)
Q. ν¨μ vs λ©μλ λ¨Όμ°¨μ΄μμ?
=> κ°μ²΄λ§λ€ κ°μ§λ κΈ°λ₯ μ΄λΌλ μλ―Έμμ λ©μλλΌκ³ λΆλ₯΄κ³ ν¨μμ λ€λ¦
[μ κ·Όμ νμ] 리ν΄νμ
λ©μλλͺ
(λ°μ΄ν°νμ
λ³μλͺ
...) {}
λ©μλ μ€λ²λ‘λ© (System.out.println())
1) μ΄λ¦μ΄ κ°μ λ©μλλ₯Ό μ¬λ¬κ° μ μνλ κ²
2) λ©μλλ₯Ό νΈμΆνλ μ
μ₯μμ μλ³ κ°λ₯ν΄μΌν¨
(νλΌλ―Έν° κ°―μ, μμ λ° λ°μ΄ν°νμ
λ±)
=> 리ν΄νμ
μ μκ΄μμ (νΈμΆνλ μ
μ₯μμ μλ³ν λ νμνμ§ μμ)
3) λνμ μΈ μ: System.out.println();
=> λ¬Έμμ΄, μ μλ₯Ό μΆλ ₯ν λλ§λ€ λ€λ₯Έ μ΄λ¦μ λ©μλλ₯Ό νΈμΆνλ€κ³ μμνλ©΄
μ΄μ λ μμ°μ€λ½κ² λμ΄
< ν΄λμ€μ μ μΈ κ°λ₯νκ² >
- λ©€λ²λ³μ (μμ±, νλ)
- μμ±μ (κ°μ²΄λ₯Ό μμ±νλ λ°©λ²)
- λ©μλ
< static >
1. κ°μ²΄λ§λ€ κ°μ§λ κ²μ΄ μλ ν΄λμ€μ μμλ κ²
2. κ°μ²΄λΌλ¦¬ 곡μ
3. λ©λͺ¨λ¦¬ λ‘λ© νμ΄λ°μ΄ λ λΉ λ¦
λ νΌλ°μ€ νλ³ν
1. λΆλͺ¨νμ
μΌλ‘λ(μ
μΊμ€ν
) μΌλ§λ μ§ κ°λ₯
2. μμμ μ΄λ€ κ°μ²΄κ° μ μ₯λμ΄μλμ§κ° μ€μ!
λμ λ°μΈλ©
- μ½λμμμ νΈμΆλ κ²μΌλ‘ μμλλ λ©μλμ
μ€μ μ€νμμ (λμ )μ μ°κ²°λλ(λ°μΈλ©) λ©μλκ° λ€λ₯Έ νμ
- μ΄λ€ κ°μ²΄κ° μ μ₯λμ΄μλμ§κ° μ€μ!
A a = new B();
a.method(); // Aκ° μΆλ ₯λ κ²μΌλ‘ μμλ¨
=> μ€μ μ€νμμ μ μ°κ²°λλ λ©μλλ B
λ€νμ± (Polymorphism) (μμ μ€, PolyHero)
- λ νΌλ°μ€ νλ³ν(μ
μΊμ€ν
) + λμ λ°μΈλ©
μΆμν΄λμ€ (abstract class)
=> [μΆμνλ₯Ό ν΅ν΄] 곡ν΅μ μ μΆμΆν ν΄λμ€
1. κ°μ²΄λ₯Ό μμ±ν μ μμ
=> μΆμμ μΈ κ°λ
μ΄λ―λ‘ μμ± X (Drop λλ©΄ μλλ μμ΄ν
)
=> ν΄λμ€μ΄κΈ° λλ¬Έμ μμ±μκ° μμ
2. μΆμλ©μλλ₯Ό κ°μ§ μ μλ ν΄λμ€
=> μΆμλ©μλ: abstract ν€μλκ° λΆκ³ λ°λ {} μμ΄ μ μΈλ§ λμ΄μλ λ©μλ
μΈν°νμ΄μ€ (interface)
=> μλ 100% μμμ μΆμλ©μλλ§ μ‘΄μ¬, Java 8μ default λ©μλκ° μΆκ°λκΈ΄ν¨
1. μμμ μΆμλ©μλλ§ μ¬ μ μμΌλ―λ‘
λ³μλ public static final μλ΅ κ°λ₯
λ©μλλ public abstract μλ΅ κ°λ₯
2. λ€μ€μμ κ°λ₯ (μΈν°νμ΄μ€λΌλ¦¬ extends, μ€μ²΄ ν΄λμ€μμλ implements)
=> μΆμλ©μλ μ΄λ―λ‘ μ΄λ¦μ΄ κ°μ λ©μλλ₯Ό 2κ° λ¬Όλ €λ°λλΌλ
λͺ¨νΈνμ§ μμΌλ―λ‘ λ€μ€μμ (O)
3. λ°λκ° μλ λ©μλλ‘λ defualtμ static λ©μλ κ°λ₯
Enum (μμ€ν
μ μμμ μ°μ΄λ κ³΅ν΅ μ½λκ° [selectBox, radio, checkBox]
Wrapper ν΄λμ€
- κΈ°λ³Έλ°μ΄ν°νμ
8κ°μ§μ 1:1λ‘ λμλλ ν΄λμ€λ€μ λͺ¨μ
- κΈ°λ³Έλ°μ΄ν°νμ
μ κΈ°λ₯(λ©μλ)μ΄ μμΌλ―λ‘ κΈ°λ₯μ μ§μν΄μ£Όλ ν΄λμ€λ€μ λͺ¨μ
Collection Framwork (API, λΌμ΄λΈλ¬λ¦¬)
=> Set, List, Map
1) Set: μ€λ³΅νμ©(X)
=> μ λ ¬(TreeSet), μμ(LinkedHashSet), μΌλ°(HashSet)
2) List: λ°°μ΄μ²λΌ μΈλ±μ€λ₯Ό κ°μ§λ©° ν¬κΈ° λ³κ²½ κ°λ₯
=> ArrayList, Vector, LinkedList (λ°μ΄ν°μ€κ° μΆκ°/μμ κ° λΉ λ¦)
3) Map : DTO, JSON μ²λΌ (key : value) κ΅¬μ‘°λ‘ μ΄λ£¨μ΄μ§ λ°μ΄ν°νμ
=> μ λ ¬(TreeMap), μμ(LinkedHashMap), μΌλ°(HashMap)
String ν΄λμ€μμ μμ£Ό μ°λ λ©μλ (μ½λλ§ λ³΄κ³ κ²°κ³Όλ₯Ό μμμΌν μ λ)
=> split, trim, replace, substring, indexOf, contains
λλ€μ (μΆμλ©μλκ° 1κ° λΏμΈ μΈν°νμ΄μ€μ μμ κ°μ²΄λ₯Ό μμ±νλ λ¬Έλ²)
(νλΌλ―Έν°) -> { μ€νλ¬Έ... }
1) νλΌλ―Έν°κ° νλμ΄λ©΄ () μλ΅κ°λ₯
2) μ€νλ¬Έμ΄ νλμ΄λ©΄ {} μλ΅κ°λ₯
3) μ°μ°κ²°κ³Όκ° return λμ΄μΌ νλ©΄ returnλ¬Έ μλ΅ κ°λ₯
* */
I i = new I() {
@Override
public void method() {
}
};
i = () -> {};
}
}
interface I {
public void method();
}
enum μ₯λ₯΄ {
μ½λ―Έλ("01"), μ‘μ
("02");
String code;
private μ₯λ₯΄(String code) {
this.code = code;
}
}
class A {
public void method() {
System.out.println("A");
}
}
class B extends A {
@Override
public void method() {
System.out.println("B");
}
}