[JAVA] 11. κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°3. κΈ°λ³Έν 맀κ°λ³μμ μ°Έμ‘°ν 맀κ°λ³μ, μ°Έμ‘°ν λ°ννμ , μ¬κ·νΈμΆ, ν΄λμ€ λ©μλμ μΈμ€ν΄μ€ λ©μλ
1οΈβ£ κΈ°λ³Έν 맀κ°λ³μμ μ°Έμ‘°ν 맀κ°λ³μ
μλ°μμλ λ©μλλ₯Ό νΈμΆν λ 맀κ°λ³μλ‘ μ§μ ν κ°μ λ©μλμ 맀κ°λ³μμ 볡μ¬ν΄μ λ겨μ€λ€.
맀κ°λ³μμ νμ μ΄ κΈ°λ³Έν primitive typeμΌ λλ κΈ°λ³Έν κ°μ΄ 볡μ¬λκ² μ§λ§,
μ°Έμ‘°ν reference type μ΄λ©΄ μΈμ€ν΄μ€μ μ£Όμκ° λ³΅μ¬λλ€.
κΈ°λ³Έν 맀κ°λ³μ : λ³μμ κ°μ μ½κΈ°λ§ ν μ μλ€. (read only)
μ°Έμ‘°ν 맀κ°λ³μ : λ³μμ κ°μ μ½κ³ λ³κ²½ν μ μλ€. (read & write)
- κΈ°λ³Έν 맀κ°λ³μ
change(int x)λ κΈ°λ³Έν 맀κ°λ³μ
λ°λΌμ d.xμ κ°μ΄ λ³κ²½λμ§ μλλ€. μλνλ©΄ μλ³Έμ΄ μλ 볡μ¬λ³Έμ΄ λ³κ²½λ κ²μ΄κΈ° λλ¬Έμ μλ³Έμλ μλ¬΄λ° μν₯μ μ£Όμ§ μλλ€!
-> κΈ°λ³Έν 맀κ°λ³μλ λ³μμ μ μ₯λ κ°λ§ μ½μ μ μμ λΏ λ³κ²½ν μ μλ€.
- μ°Έμ‘°ν 맀κ°λ³μ
change(Date d) λ μ°Έμ‘°ν 맀κ°λ³μ
-> λ°λΌμ μ΄λ²μλ d.xμ κ°μ΄ λ³κ²½λμλ€. μλνλ©΄ change(Data d) 맀κ°λ³μκ° μ°Έμ‘°νμ΄λΌμ κ°μ΄ μλλΌ κ°μ΄ μ μ₯λ μ£Όμλ₯Ό change() μ λ겨주μκΈ° λλ¬Έμ κ°μ μ½μ΄μ€λκ² λΏλ§ μλλΌ λ³κ²½νλ κ²λ κ°λ₯νλ€.
μ΄μ μμ μλ λ¬λ¦¬ change() μ 맀κ°λ³μλ₯Ό μ°Έμ‘°νμΌλ‘ μ μΈνκΈ° λλ¬Έμ xμ κ°μ΄ μλ μ£Όμκ° λ§€κ°λ³μ dμ 볡μ¬λμλ€.
μ΄μ mainλ©μλμ μ°Έμ‘°λ³μ dμ change λ©μλμ μ°Έμ‘°λ³μ dλ κ°μ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ² λλ€.
2οΈβ£ μ°Έμ‘°ν λ°ννμ
맀κ°λ³μλΏλ§ μλλΌ λ°ννμ λ μ°Έμ‘°νμ΄ λ μ μλ€.
λ°ννμ μ΄ μ°Έμ‘°νμ΄λΌλ κ²μ λ©μλκ° κ°μ²΄μ μ£Όμλ₯Ό λ°ννλ€λ κ²μ΄λ€.
3οΈβ£ μ¬κ· νΈμΆ recursive call
void method() {
method();
}
-> λ©μλμ λ΄λΆμμ λ©μλ μμ μ λ€μ νΈμΆνλ κ²μ μ¬κ·νΈμΆμ΄λΌκ³ νλ€. κ·Έλ¦¬κ³ μ¬κ· νΈμΆμ νλ λ©μλλ₯Ό μ¬κ· λ©μλλΌκ³ νλ€.
κ·Έλ₯ μ€λ‘μ§ μ¬κ·νΈμΆμ νλ©΄ 무ν λ°λ³΅μ λΉ μ§κ² λκΈ° λλ¬Έμ μ¬κ· νΈμΆλ μ‘°κ±΄λ¬Έμ΄ νμμ μΌλ‘ λ°λΌλ€λλ€.
μ¬κ·νΈμΆμ λ°λ³΅λ¬Έκ³Ό μ μ¬ν μ μ΄ λ§μΌλ©°, λλΆλΆμ μ¬κ·νΈμΆμ λ°λ³΅λ¬ΈμΌλ‘ μμ±νλ κ²μ΄ κ°λ₯νλ€.
λ°λ³΅λ¬Έμ κ·Έμ κ°μ λ¬Έμ₯μ λ°λ³΅ν΄μ μννλ κ²μ΄μ§λ§, λ©μλλ₯Ό νΈμΆνλ κ²μ λ°λ³΅λ¬Έλ³΄λ€ λͺ κ°μ§ κ³Όμ , μλ₯Ό λ€λ©΄ 맀κ°λ³μ 볡μ¬μ μ’ λ£ ν 볡κ·ν μ£Όμ μ μ₯ λ±, μ΄ μΆκ°λ‘ νμνκΈ° λλ¬Έμ λ°λ³΅λ¬Έλ³΄λ€ μ¬κ·νΈμΆμ μνμκ°μ΄ λ μ€λ κ±Έλ¦°λ€.
κ·Έλ°λ° μ¬κ·νΈμΆμ μ¬μ©νλ μ΄μ λ?
μ¬κ·νΈμΆμ λ Όλ¦¬μ μΌλ‘ κ°κ²°νκΈ° λλ¬Έμ μ¬μ©νλ€.
λͺ κ²Ήμ λ°λ³΅λ¬Έκ³Ό 쑰건무μΌλ‘ 볡μ‘νκ² μμ±λ μ½λκ° μ¬κ· νΈμΆλ‘ μμ±νλ©΄ λ³΄λ€ λ¨μν ꡬ쑰λ₯΄ λ°λ μ μκΈ° λλ¬Έμ΄λ€.
-> 24
μ¬κ·νΈμΆμ λνμ μΈ μλ ν©ν λ¦¬μΌ κ΅¬νλ κ²μ΄λ€.
f(n) = n * f(n-1), λ¨ f(1) = 1
3οΈβ£ ν΄λμ€ λ©μλ(static λ©μλ) μ μΈμ€ν΄μ€ λ©μλ
λ©μλ μμ staticμ΄ λΆμ΄ μμΌλ©΄ ν΄λμ€ λ©μλκ³ , λΆμ§ μμΌλ©΄ μΈμ€ν΄μ€ λ©μλμ΄λ€.
ν΄λμ€ λ©μλλ ν΄λμ€λ³μμ²λΌ κ°μ²΄λ₯Ό μμ±νμ§ μκ³ λ 'ν΄λμ€μ΄λ¦.λ©μλμ΄λ¦' κ³Ό κ°μ μμΌλ‘ νΈμΆμ΄ κ°λ₯νλ€.
λ°λ©΄μ μΈμ€ν΄μ€ λ©μλλ λ°λμ κ°μ²΄λ₯Ό μμ±ν΄μΌλ§ νΈμΆν μ μλ€.
μΈμ€ν΄μ€ λ©μλ
- μΈμ€ν΄μ€ μμ± ν 'μ°Έμ‘°λ³μ.λ©μλμ΄λ¦()' νΈμΆ
- μΈμ€ν΄μ€ λ©€λ²(iv, im) κ³Ό κ΄λ ¨λ μμ μ νλ λ©μλ
- λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μ(iv) μ¬μ© κ°λ₯
μΈμ€ν΄μ€ λ©μλλ μΈμ€ν΄μ€ λ³μμ κ΄λ ¨λ μμ μ νλ, μ¦ λ©μλμ΄ μμ μ μννλλ° μΈμ€ν΄μ€ λ³μλ₯Ό νμλ‘ νλ λ©μλμ΄λ€.
static λ©μλ
- κ°μ²΄ μμ± μμ΄ 'ν΄λμ€μ΄λ¦.λ©μλμ΄λ¦()'μΌλ‘ νΈμΆ
- μΈμ€ν΄μ€ λ©€λ²(iv,im) κ³Ό κ΄λ ¨μλ μμ μ νλ λ©μλ
- λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μ(iv)λ₯Ό μ¬μ© λΆκ°
ν΄λμ€ λ©μλλ μΈμ€ν΄μ€μ κ΄κ³μλ(μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€ λ©μλλ₯Ό μ¬μ©νμ§ μλ) λ©μλλ₯Ό ν΄λμ€ λ©μλ(static λ©μλ)λ‘ μ μνλ€.
1. ν΄λμ€λ₯Ό μ€κ³ν λ λ©€λ²λ³μ μ€ λͺ¨λ μΈμ€ν΄μ€μ 곡ν΅μΌλ‘ μ¬μ©νλ κ²μ staticμ λΆμΈλ€.
: μμ±λ κ° μΈμ€ν΄μ€λ μλ‘ λ 립μ μ΄κΈ° λλ¬Έμ κ° μΈμ€ν΄μ λ³μλ μλ‘ λ€λ₯Έ κ°μ μ μ§νλ€.
κ·Έλ¬λ λͺ¨λ μΈμ€ν΄μ€μμ κ°μ κ°μ΄ μ μ§λμ΄μΌ νλ λ³μλ staticμ λΆμ¬μ ν΄λμ€ λ³μλ‘ μ μν΄μΌνλ€.
2. ν΄λμ€ λ³μ (static λ³μ)λ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ©ν μ μλ€.
: static μ΄ λΆμ λ³μλ ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ° λ μ΄λ―Έ μλμ μΌλ‘ μμ±λκΈ° λλ¬Έμ΄λ€.
3. ν΄λμ€ λ©μλ (static λ©μλ)λ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©ν μ μλ€.
: μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€κ° λ°λμ μ‘΄μ¬ν΄μΌλ§ μ¬μ©ν μ μλλ°, ν΄λμ€ λ©μλλ μΈμ€ν΄μ€ μμ± μμ΄ νΈμΆκ°λ₯νλ―λ‘ ν΄λμ€ λ©μλκ° νΈμΆλμμ λ μΈμ€ν΄μ€κ° μ‘΄μ¬νμ§ μμ μλ μλ€. κ·Έλμ ν΄λμ€ λ©μλμμ μΈμ€ν΄μ€ λ³μμ μ¬μ©μ κΈμ§νλ€.
λ°λ©΄μ μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€ λ©μλμμλ staticμ΄ λΆμ λ©€λ²λ€μ μ¬μ©νλ κ²μ΄ μΈμ λ κ°λ₯νλ€. μΈμ€ν΄μ€ λ³μκ° μ‘΄μ¬νλ€λ κ²μ static λ³μκ° μ΄λ―Έ λ©λͺ¨λ¦¬μ μ‘΄μ¬νλ€λ κ²μ μλ―ΈνκΈ° λλ¬Έμ΄λ€.
4. λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νμ§ μλλ€λ©΄, staticμ λΆμ΄λ κ²μ κ³ λ €νλ€.
: λ©μλμ μμ λ΄μ© μ€μμ μΈμ€ν΄μ€λ³μλ₯Ό νμλ‘ νλ€λ©΄ staticμ λΆμΌ μ μλ€. λ°λλ‘ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ staticμ λΆμ΄μ. λ©μλ νΈμΆμκ°μ΄ 짧μμ§κΈ° λλ¬Έμ μ±λ₯μ΄ ν₯μλλ€.
staticμ μ λΆμΈ λ©μλλ μ€ν μ νΈμΆλμ΄μΌν λ©μλλ₯Ό μ°Ύλ κ³Όμ μ΄ μΆκ°μ μΌλ‘ νμνκΈ° λλ¬Έμ μκ°μ΄ λ κ±Έλ¦°λ€.
- ν΄λμ€μ λ©€λ²λ³μ μ€ λͺ¨λ μΈμ€ν΄μ€μ 곡ν΅λ κ°μ μ μ§ν΄μΌνλ κ²μ΄ μλμ§ μ΄ν΄λ³΄κ³ μμΌλ©΄, staticμ λΆμ¬μ€λ€.
- μμ±ν λ©μλ μ€μμ μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€ λ©μλλ₯Ό μ¬μ©νμ§ μλ λ©μλμ staticμ λΆμΌ κ²μ κ³ λ €νλ€.
-> ν΄λμ€ λ©μλλ κ°μ²΄ μμ±μμ΄ λ°λ‘ νΈμΆμ΄ κ°λ₯νκ³ , μΈμ€ν΄μ€ λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±ν νμ νΈμΆ κ°λ₯νλ€.
4οΈβ£ ν΄λμ€ λ©€λ²μ μΈμ€ν΄μ€ λ©€λ²κ°μ μ°Έμ‘°μ νΈμΆ
κ°μ ν΄λμ€μ μν λ©€λ²λ€ κ°μλ λ³λμ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ λ μλ‘ μ°Έμ‘° λλ νΈμΆμ΄ κ°λ₯νλ€.
λ¨ ν΄λμ€λ©€λ²κ° μΈμ€ν΄μ€ λ©€λ²λ₯Ό μ°Έμ‘° λλ νΈμΆνκ³ μ νλ κ²½μ°μλ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌνλ€.
-> μΈμ€ν΄μ€ λ©€λ²κ° μ‘΄μ¬νλ μμ μ ν΄λμ€ λ©€λ²λ νμ μ‘΄μ¬νμ§λ§, ν΄λμ€ λ©€λ²κ° μ‘΄μ¬νλ μμ μ μΈμ€ν΄μ€ λ©€λ²κ° μ‘΄μ¬νμ§ μμ μλ μκΈ° λλ¬Έμ΄λ€.
ν΄λμ€ λ©€λ²λ μΈμ λ μ°Έμ‘° λλ νΈμΆμ΄ κ°λ₯νκΈ° λλ¬Έμ μΈμ€ν΄μ€ λ©€λ²κ° ν΄λμ€ λ©€λ²λ₯Ό μ¬μ©νλ κ²μ μλ¬΄λ° λ¬Έμ κ° μλλ€.
ν΄λμ€ λ©€λ² κ°μ μ°Έμ‘° λλ νΈμΆ μμ μλ¬΄λ° λ¬Έμ κ° μλ€.
κ·Έλ¬λ μΈμ€ν΄μ€ λ©€λ²λ λ°λμ κ°μ²΄λ₯Ό μμ±ν νμλ§ μ°Έμ‘° λλ νΈμΆμ΄ κ°λ₯νκΈ° λλ¬Έμ ν΄λμ€ λ©€λ²κ° μΈμ€ν΄μ€ λ©€λ²λ₯Ό μ°Έμ‘°, νΈμΆνκΈ° μν΄μλ κ°μ²΄λ₯Ό μμ±νμ¬μ νλ€.
νμ§λ§ μΈμ€ν΄μ€ λ©€λ²κ°μ νΈμΆμλ μλ¬΄λ° λ¬Έμ κ° μλ€. μλνλ©΄ νλμ μΈμ€ν΄μ€ λ©€λ²κ° μ‘΄μ¬νλ€λ κ²μ μΈμ€ν΄μ€κ° μ΄λ―Έ μμ±λμλ€λ κ²μ μλ―Ένλ©° μ¦ λ€λ₯Έ μΈμ€ν΄μ€ λ©€λ²λ€λ λͺ¨λ μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€.