2023-02-04
κ³ λ¨νλ μλ° μ
λ¬Έ νλ‘κ·Έλλ° μ±
μ μλ
νμ΅λλ€.
μ§μ§μ§μ§μ§!
Java
λ νλ«νΌμ μν₯μ λ°μ§ μλλ€. Java
λ₯Ό μ»΄νμΌ ν κ²½μ° .class
μ νμ₯μλ₯Ό κ°κ²λλ©°, μ΄λ μ€κ° κΈ°κ³μ΄λ‘, μ΄μ체μ μ λ§λ μλ° κ°μ λ¨Έμ
μ νμ©νμ¬μΌ μ€νμ΄ κ°λ₯νλ€. OS
μ λ§λ κ°μ λ¨Έμ μ νμ©νμ¬ νλ«νΌμ μν₯μ λ°μ§ μλ μννΈμ¨μ΄λ₯Ό ꡬμΆν μ μκ²λλ©°, μ΄λ ν λ² μμ±νλ©΄, μ΄λμλ λμκ°λ€
λ Java
μ μ¬λ‘건μ λ°λ₯Έ κ²°κ³Όμ΄λ€.C
λ C++
κ³Ό λ¬λ¦¬ ν¬μΈν°
λ₯Ό μ¬μ©νμ§ μκΈ° λλ¬Έμ λ©λͺ¨λ¦¬λ₯Ό μ§μ μ μ΄ν μΌμ΄ μμΌλ―λ‘ μμ λ μ½λλ₯Ό λ§λ€ μ μλ€.κ°λΉμ§ 컬λ ν° (GC)
κ° μ¬μ©νμ§ μλ λμ λ©λͺ¨λ¦¬λ₯Ό μ£ΌκΈ°μ μΌλ‘ μκ±°νκΈ° λλ¬Έμ ν¨μ¨μ μΈ κ΄λ¦¬ λν κ°λ₯νλ€., <, β₯, β€, ==, β
, <<, >>>
ν΄λμ€
λ©€λ²λ³μ
: ν΄λμ€ λ΄λΆμμ λ€λ£¨λ λ³μλ©μλ
: ν΄λμ€ λ΄λΆμμ λ©€λ² λ³μλ₯Ό νμ©ν λͺ©μ μΌλ‘ μ μΈλ ν¨μvoid
λ₯Ό μ μΈνλ€.ν¨ν€μ§
: ν΄λμ€ νμΌμ λ¬Άμ(κ°μ μ΄λ¦μ ν΄λμ€λΌλ, ν¨ν€μ§ μ΄λ¦μ΄ λ€λ₯΄λ©΄ λ€λ₯Έ ν΄λμ€)ν¨μ
main
μΈλΆμμ μ μΈλ ν¨μλ static
μ λΆμ¬μ£Όμ΄μΌ μ¬μ©μ΄ κ°λ₯νλ€.μ€ν
μ ννλ‘ λ©λͺ¨λ¦¬ 곡κ°μ΄ λ§λ€μ΄μ§λ©° LIFO
ννλ‘ λ°νλλ€.μ§μ λ³μ
λΌκ³ λΆλ₯΄κ³ , μ§μ λ³μ
λ μ€ν λ©λͺ¨λ¦¬
μ μμ±λλ€.μΈμ€ν΄μ€
μΈμ€ν΄μ€
λΌκ³ νλ€.μΈμ€ν΄μ€
λ ν λ©λͺ¨λ¦¬
μ ν΄λμ€κ° μ μ₯λλ©°, μ€ν λ©λͺ¨λ¦¬
μ λ³μκ° μ μ₯λλ€.ν λ©λͺ¨λ¦¬
λ, λμ λ©λͺ¨λ¦¬ 곡κ°μΌλ‘, μ¬μ©μ΄ λλ ν νλ‘κ·Έλλ¨Έκ° ν΄μ ν΄μ€μΌ νμ§λ§, μμ μ 리νλ―μ΄ Java
λ κ°λΉμ§ 컬λ ν°(GC)
κ° μλμΌλ‘ μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν΄μ€λ€.μμ±μ
μμ±μ
λΌκ³ νλ€.μ€λ²λ‘λ
λΌκ³ νλ€.μ κ·Ό μ μ΄μ
public
: μΈλΆν΄λμ€ μ΄λμμλ μ κ·Ό κ°λ₯protected
: κ°μ ν¨ν€μ§ λ΄λΆ, μμ κ΄κ³μ ν΄λμ€μμ μ κ·Ό κ°λ₯default
λ‘ κ°μ ν¨ν€μ§ λ΄λΆμμλ§ μ κ·Ό κ°λ₯private
: κ°μ ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯getter
: κ°μ μ»λ λ©μλsetter
: κ°μ μ§μ νλ λ©μλthis
public
μ νμΌλͺ
κ³Ό κ°μ class
λ§ κ°μ§ μ μλ€.. static
- static
μ λ€λ₯Έ λ©€λ² λ³μμ κ°μ λ°©μμΌλ‘ ν΄λμ€ λ΄λΆμ static
μ λΆμ¬ μ μΈνλ©°, λ§€λ² μλ‘ μμ±λλ λ³μκ° μλ λͺ¨λ μΈμ€ν΄μ€κ° 곡μ νλ λ³μμ΄λ€.
- ν΄λμ€ λ³μ
λΌκ³ λ λΆλ¦°λ€.
β» λ³μ μ ν μ 리
ν¨μμμμ κΈ°λ₯ ꡬν β μ§μ λ³μ
ν΄λμ€μ μμ±, κ° μΈμ€ν΄μ€ λ³ κ° β λ©€λ² λ³μ
μ¬λ¬ μΈμ€ν΄μ€μμ 곡μ β static λ³μ
μ±κΈν€ ν¨ν΄
arraycopy
λ₯Ό ν΅ν΄ 볡μ¬λ μΈμ€ν΄μ€λ μλ‘ κ°μ μ£Όμλ₯Ό κ°λ₯΄ν€λ μμ 볡μ¬
μνκ° λλ€.extends
ν€μλλ₯Ό μ¬μ©ν΄ ꡬνλλ©°, ν΄λΉ ν€μλλ₯Ό κΈ°μ€μΌλ‘ μ μλ νμ ν΄λμ€
νμλ μμ ν΄λμ€
λΌκ³ νλ€.protected
λ₯Ό μ¬μ©νλ©΄ λλ€.super
ν€μλλ₯Ό ν΅ν΄ μμ ν΄λμ€μ μμ±μλ₯Ό νΈμΆν μ μλ€.λ©μλ μ€λ²λΌμ΄λ©
μ΄ λ°μν κ²½μ°, μμ ν΄λμ€μ λ©μλλ₯Ό νΈμΆν λ super.methodName()
μ λ°©μμΌλ‘ νΈμΆν΄μΌνλ€.@Overide
ν€μλλ μ€λ²λΌμ΄λ© λ λ©μλ μμ μ μΈνλ©°, μ»΄νμΌλ¬μ μλ €μ£Όλ μν μ νλ€.νμν΄λμ€μ μλ£νμΌλ‘ ν λ³ννλ κ²
instanceof
: λ€μ΄μΊμ€ν
μ μν΄ μΈμ€ν΄μ€μ μ μλ£νμ νμΈνλ μ©λλ‘ μ¬μ©abstract
λ₯Ό λΆμ¬ μ μΈνλ€.abstract
λ₯Ό λΆμ¬ μ μΈν΄μΌ μ€λ₯λ₯Ό λ°©μ§ν μ μλ€.@Override
λ₯Ό μ μΈν λ©μλλ‘ μΆμννλ λ©μλλ₯Ό ꡬνν μ μλ€.new
μμ½μ΄λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.μ μΈκΉ??
β νμ ν΄λμ€μμ μ¬μ©ν λ©μλμ μΆμμ μΈ λ©΄μ μμ± (μμμ μν΄)final
μμ½μ΄λ₯Ό ν΅ν΄ μλμ€λ¦¬λ₯Ό μ μνλ λ©μλλ‘, νμ ν΄λμ€μμ μ¬μ μ ν μ μμ΄μΌ νλ©°λ‘μ§μ νλ¦μ λνλΈλ€.λ³μ
β μμλ₯Ό μλ―Ένλ€.λ©μλ
β νμ ν΄λμ€μμ μ¬μ μν μ μλ€.ν΄λμ€
β μμν μ μλ€.μμ
λ₯Ό ν νμΌμ λμ μ μΈνμ¬ μ¬μ©abstract
μμ½μ΄λ₯Ό λͺ
μνμ§ μμλ μΆμ λ©μλλ‘ λ³νλλ€.implements
μμ½μ΄λ‘ μ μ©μ΄ κ°λ₯νλ©°, λͺ¨λ λ©μλλ₯Ό ꡬννμ§ μλλ€λ©΄, μ μΈλ ν΄λμ€ λν μΆμ ν΄λμ€λ‘ μ νλλ€.μ μΈκΉ?
μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€κ° μ΄λ€ κΈ°λ₯μ λ©μλλ₯Ό μ 곡νλμ§ λͺ
μνλ κΈ°λ₯μΌλ‘ μ¬μ©λλ€.java.lang
μ μμΉμ μ‘΄μ¬νλ©°, κΈ°λ³Έμ μΌλ‘ μ»΄νμΌ λ λ extends
μν€κΈ° λλ¬Έμ νλ‘κ·Έλλ¨Έκ° μ§μ μμ±ν νμλ μλ€.toString
β λ©μλμ μΈμ€ν΄μ€ μ 보λ₯Ό 보μ¬μ€String
, Integer
νμ μ¬μ μλ λ©μλλ₯Ό μ¬μ©ν΄ object.(class)@(hashcode)μ ꡬμ±μ΄ μλ λ§€κ°λ³μ κ·Έ μ체λ₯Ό νΈμΆνλ€.@Override
λ₯Ό ν΅ν΄ ν΄λμ€μ toString
ν¨μλ₯Ό ꡬννμ¬ μνλλλ‘ κ²°κ΄κ° μΆμΆμ΄ κ°λ₯νλ€.equals
β λ μμκ° κ°μμ§ λΉκ΅hashCode
β ν΄λΉ μμμ μ£Όμκ°μ μΆλ ₯equals
λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν κ²½μ°, ν΄λΉ λ©μλλ κ°μ ν΄μ μ½λλ₯Ό κ°λ₯΄ν€λλ‘ λ³κ²½ν΄μ£Όμ΄μΌ νλ€.String str1 = new String("123"); // ν λ©λͺ¨λ¦¬μ μ μ₯
String str2 = "123"; // μμ νμ μ μ₯
StringBuilder
λ₯Ό μ¬μ©νλ©΄, λ¬Έμμ΄μ΄ λ³ν¨μ λ°λΌ μ μ£Όμλ₯Ό ν λΉνμ§ μκ³ κΈ°μ‘΄ μ£Όμμ μ°κ²°λλ€. μ¦ ν¨μ¨μ΄ μμΉClass
μλ£νμ λ€μν λ©μλλ₯Ό μ¬μ©ν΄ ν΄λμ€μ μ΄λ¦μ κ°μ Έμ¬ μ μλ€.getClass
, {ClassName}.class
, Class.forName
Class.forName
μ λ§€κ°λ³μλ‘ μ λ¬λλ λ¬Έμμ΄μ ν΅ν΄ ν΄λμ€μ λμ λ‘λ©μ΄ κ°λ₯νκΈ° λλ¬Έμ, μ μ°ν μ¬μ©μ΄ κ°λ₯νλ€.<T>
μ μ μΈλ μλ£νμ λ°λΌ λ§μΆμ΄ μ»΄νμΌνλ―λ‘, νλ³νμ νμ§ μμλ λλ€.<T extends {ClassName}>
μ ννλ‘ μ λ€λ¦μ μ¬μ© κ°λ₯ν μλ£νμ μ νμ λ μ μλ€.<>
μ΄κ²μ λ€μ΄μλͺ¬λ μ°μ°μ λΌκ³ λΆλ₯΄λ©°, μ°μ°μλ§ μ¬μ©νκ³ μΈμ€ν΄μ€μ μλ£νμ λͺ
μνμ§ μμλ μ»΄νμΌλ¬λ ν λΉλλ ν΄λμ€μ μλ£νμ λ³΄κ³ μΈμ€ν΄μ€μ μλ£νμ μ μΆν μ μλ€.μλ£κ΅¬μ‘°
λΌκ³ νλ©°, μ μ§ λ° κ°λ°μ μ¬μ©ν μλ£λ₯Ό μ΄λ€ κ΅¬μ‘°λ‘ κ΄λ¦¬ν μ§ λͺ
μν΄λμ κ²μ λ§νλ€.Vector
μ κ°μ΄ λκΈ°νκ° νμνλ€λ©΄ [synchronizedList](https://paciencia.tistory.com/31)
λ₯Ό μ¬μ©νμ¬ μ μΈνλ©΄ λ¨ArrayList
μμ μ°¨μ΄μ β λ κ° μ΄μμ μ€λ λκ° λμμ Vectorλ₯Ό μ¬μ©ν λμλ μ€ν μμλ₯Ό 보μ₯ν¨λκΈ°ν
β JAVAμ μμ
λ¨μλ₯Ό μ€λ λ
λΌ νλ©°, λ κ° μ΄μμ μ€λ λ(λ©ν°μ€λ λ
)λ₯Ό μ¬μ© ν λ μ€λ₯ μλ°©μ μν΄ λ μ€λ λκ° ν λ©λͺ¨λ¦¬μ λμ μ κ·Όνμ§ λͺ»νλλ‘ μμλ₯Ό λ§μΆλ κ²ArrayList
λ³΄λ€ λ리λ€.μ£Όμκ°
μ κ°μ§κ³ μλ€.ArrayList
λ³΄λ€ λΉ λ₯΄λ€.ArrayList
κ° ν¨μ¬ λΉ λ₯΄λ©°, μλ£ λ³λμ΄ λ§μ κ²½μ°μλ§ νμ©νλ κ²μ΄ μ’λ€.Iterator
μμ±μλ₯Ό νμ©νμ¬ λͺ¨λ μμμ μνκ° κ°λ₯νλ€.μ΄μ§ νΈλ¦¬
λ₯Ό μ¬μ©νλ€.Comparable
, Comparator
μΈν°νμ΄μ€κ° ꡬνλμ΄μΌ νλ€.Comparable
β compareTo
λ©μλλ₯Ό μ¬μ μν΄ μ¬μ©νλ©° μΈμλ‘ λ°μ κ°μ²΄μ this λ₯Ό λΉκ΅νμ¬ μ λ ¬νλ€.Comparator
β compare
λ©μλλ₯Ό μ¬μ μν΄ μ¬μ©νλ©°, λ μΈμλ₯Ό λ°μ λΉκ΅νλ©° μ λ ¬νλ€.TreeSet
μμ±μμ Comparatorλ₯Ό ꡬνν κ°μ²΄λ₯Ό λ§€κ°λ³μλ‘ μ λ¬Vector
ν΄λμ€μ λ§μ°¬κ°μ§λ‘, λκΈ°νλ₯Ό μ 곡νλ©°, ν΄λΉ κΈ°λ₯μ μ¬μ©νμ§ μλλ€λ©΄ HashMap
μ μ¬μ©νλ κ²μ΄ μ’λ€.TreeSet
κ³Ό λ§μ°¬κ°μ§λ‘ μ΄μ§ νΈλ¦¬
λ₯Ό μ¬μ©νλ©°, Comparable
νΉμ Comparator
μΈν°νμ΄μ€λ₯Ό ꡬνν΄μΌνλ€.private
μΌλ‘ μ μΈλμλ€λ©΄ ν΄λμ€ μΈλΆμμ μ¬μ©μ΄ λΆκ°λ₯νλ€.static
μμ½μ΄λ‘ νμν μΈλΆ ν΄λμ€λ₯Ό μ μΈνλ©΄ λλ€.Runnable
μΈν°νμ΄μ€λ‘ μ μΈλλ©°, λ°λμ ν΄λμ€ λ΄λΆμ run
μ μ€λ²λΌμ΄λ© ν΄ μ¬μ©ν΄μΌνλ€.new Runnable
λ‘ μ μΈνλ©°, ν΄λμ€ λμ ;
λ₯Ό λΆμ¬ λ§λ¬΄λ¦¬ν μ΅λͺ
ν΄λμ€λ₯Ό λ§νλ€.μλ°μ ν¨μν νλ‘κ·Έλλ° λ°©μμ λλ€μ
μ΄λΌκ³ νλ€.
int add(int x, int y) {
return x + y
}
(int x, int y) -> {return x + y;} // μ μκ³Ό κ°μ λ°νκ°μ κ°λλ€.
μλ°μμ μ°Έμ‘° λ³μ μμ΄ λ©μλλ₯Ό νΈμΆν μ μκΈ° λλ¬Έμ λλ€μ
μ ν¨μν μΈν°νμ΄μ€λ₯Ό λ§λ€κ³ ν΄λΉ μΈν°νμ΄μ€λ₯Ό μ μ©ν ν΄λμ€ λ΄μμ μ¬μ©λμ΄μΌ νλ€.
@FunctionalInterface
μ λ
Έν
μ΄μ
μ νμ©νλ©΄, ν¨μν μΈν°νμ΄μ€ λΌλ μλ―Έλ₯Ό λνλ΄λ―λ‘, λ©μλλ₯Ό λκ° μ΄μ μΆκ°ν μ μ€λ₯κ° λ°μνλ€.
μ€νΈλ¦Ό
μ΄λ, λ°°μ΄ μμλ₯Ό νΉμ κΈ°μ€μ λ°λΌ μ λ ¬νκ±°λ, μΌλΆ λ°μ΄ν°λ₯Ό νν° νλ κΈ°λ₯ λ±μ 미리 ꡬνν΄λμ ν΄λμ€λ₯Ό μλ―Ένλ€.JS
μ filter
, map
, forEach
μ κ°μ λ¬Έλ²μ μ¬μ©νλ€.μ»΄νμΌ μ€λ₯
μ€ν μ€λ₯
Exception
try-catch
λ¬Έμ μ¬μ©νμ¬ μ²λ¦¬close
) try-catch-finally
λ¬Έμ μ΄μ©νμ¬ λ¦¬μμ€λ₯Ό μ’
λ£μν€λ©΄ λλ€.try-with-resources
λ¬Έμ μ¬μ©νλ©΄ λ΄λΆμμ μ¬μ©λ 리μμ€λ μλμΌλ‘ close
λλ€.AutoCloseable
μ μΈν°νμ΄μ€λ‘ μμ±ν ν close
λ©μλλ₯Ό Overrideν΄ λ§λ ν try-catch
λ¬Έμμ μ μΈνλ©΄, AutoCloseκ° λλ€.try-catch
λ¬Έμ μ μΈλ μμλλ‘ κ²μ¬νκΈ° λλ¬Έμ Exception
μ²λΌ μ΅μμ μμΈμ²λ¦¬λ₯Ό λ¨Όμ μ μΈνλ€λ©΄, μ€λ₯κ° λ°μν μ μλ€.extends
μμ½μ΄λ‘ Exception
μ μμλ°μ super
λ©μλλ‘ μ¬μ©μ μ μ μμΈλ₯Ό ꡬννλ€.μ€νΈλ¦Ό
μ ν΅ν΄ μ΄λ£¨μ΄μ§Reader
μ€νΈλ¦Όμ νμ©ν΄μΌνλ€.InputStreamReader
λ 보쑰μ€νΈλ¦ΌμΌλ‘ κΈ°λ° μ€νΈλ¦ΌμΈ InputStream
μ λ§€κ°λ³μλ‘ λ°μ μμ±λλ€λ©΄, λ°μ΄νΈ λ¨μλ‘ μ½μ λ΄μ©μ λ¬Έμλ‘ λ³νν΄μ£ΌκΈ° λλ¬Έμ νκΈλ μ½μ μ μλ€.Buffered μ€νΈλ¦Ό
μ΄ λΉ¨λμObject implements Serializable
μ μ μΈν΄μΌνλ€.kwb020312μ Github Repository
λ무λ무 μμΈν μ€λͺ λμ΄μκ³ , μ± μ μ½μ΄λ³΄λ©° μ²μμΌλ‘ μλ¬΄λ° μλ¬ μμ΄ μλ νλ€.
μλ¬κ° λ μ μλ λΆλΆμ μ¬μΈν μλ €μ£Όμ μ κ°λ°μλ§ λͺ°λν μ μλ μκ°μ΄μλ€.
κ°μΆ!