Javaμ Call by value(pass by value)
Last updated
Last updated
C++μμμ swap() μ νΈλ¦¬ν° ν¨μλ μ£Όμκ°μ κ΅ννλ call by reference λ°©μμΌλ‘μ λμνλ€. tmp λ³μλ₯Ό μ€κ° 맀κ°λ‘ μ£Όμκ°(κ°μ μμΉ)μ μλ‘ κ΅ννλ€.
Javaμμ primitive type, reference typeμ ν΄λΉνλ κ°μ μ μ₯νλ λ°©μμ μ°¨μ΄κ° μλ€.
JVM λ©λͺ¨λ¦¬μμ primitive typeμ stack μμμ μ μ₯λλ€
reference typeμ κ·Έ κ°μ²΄μΈ κ°μ΄ heap μμμ μ μ₯λκ³ , stack μμμ μλ λ³μκ° κ°μ²΄μ μ£Όμκ°μ κ°μ§κ³ μλ€.
λ§μ½ swap λ©μλμμ reference λ³μλ₯Ό νλΌλ―Έν°λ‘ λκΈ°κ² λλ©΄ ν΄λΉ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ‘μ΄ λ³μκ° stack μμμ μ μκ° λλ€. μλ‘κ² λ§λ€μ΄μ§ λ³μμ μ£Όμκ°μ μλ‘ κ΅ννκ±°λ, κ°μ λ³κ²½νλ€κ³ ν΄μ κΈ°μ‘΄μ λ³μκ°μ΄ λ³νμ§ μλλ€. κ·Έλ κΈ° λλ¬Έμ Javaλ νμ call by value(pass by value) λ°©μμΌλ‘ λμνλ€κ³ ν μ μλ€.
λ©μλ νΈμΆ λ°©μ κ°λ
Call by value λ°©μμ λ©μλ νΈμΆ λ°©μμμ λ©μλ νΈμΆμ(caller)μ νΈμΆλΉνλ μμ μ(callee)μ νλΌλ―Έν°λ 볡μ¬λμ΄μ μλ‘ λ€λ₯Έ λ³μμ΄λ€. λ°λΌμ μμ μμ νλΌλ―Έν°λ₯Ό μμ ν΄λ νΈμΆμμ λ³μκ° λ°λμ§ μλλ€.
call by reference λ°©μμ μ°Έμ‘°(μ£Όμ)λ₯Ό μ§μ μ λ¬νκΈ° λλ¬Έμ callerμ λ³μμ calleeμ νλΌλ―Έν°κ° μμ ν λμΌν λ³μμ΄λ€. μμ μμ νλΌλ―Έν°λ₯Ό μμ νλ©΄ νΈμΆμμ λ³μλ λ°λλ€.
μλ°μμλ κΈ°λ³Έμ μΌλ‘λ Reference typeμ μ΄μ©ν΄μ swapμ ꡬνν΄μΌνμ§λ§, primitive λ³μ κ°μ κ΅ννλ νΈλ¦λ μλ€. Collections ν¨ν€μ§μμ list λ΄μ μμκ° κ°μ swap λ©μλλ₯Ό μ§μνλ€.