[JAVA] '=='κ³Ό 'equals()'μ μ°¨μ΄λ 무μμΌκΉ?
==? equals()?
κΈ°λ³Έμ μΌλ‘ μ΄ λμ μμͺ½μ μμΉν κ° νΉμ κ°μ²΄λ₯Ό λΉκ΅ν κ°μ boolean typeμΌλ‘ λ°ννλ€λ 곡ν΅μ μ κ°μ§λλ€. νμ§λ§ μ μ String μ°Έμ‘°λ³μμ κ°μ κ°μΌλ‘ μ΄κΈ°ν μμΌ λμμ±λ‘, '==' μ°μ°μλ₯Ό μ΄μ©νμ¬ λΉκ΅λ₯Ό ν΄λ³΄λ©΄ λ falseλ₯Ό λ°ννκ² λ©λλ€. μ΄λ¬ν κ²°κ³Όλ₯Ό λ΄€μ λ == μ°μ°μμ equals() λ©μλ μ¬μ΄μλ ν° μ°¨μ΄μ μ΄ μλ κ²μ΄ νμ€ν©λλ€. λ°λΌμ μ±κ³΅μ μΈ μ½λλ₯Ό μμ±νκΈ° μν΄μλ μ΄ λμ μ°¨μ΄μ μ μμμΌλ§ ν©λλ€.
Call By Reference, Call By Value
== μ°μ°μμ equals() λ©μλ μ¬μ΄μ κ°μ₯ μ€μν μ°¨μ΄μ μ μκΈ° μν΄μλ Call By Reference(μ΄ν CBR), Call By Value(μ΄ν CBV) μ λν΄ νμ€νκ² μ΄ν΄λ₯Ό νκ³ μμ΄μΌλ§ ν©λλ€. κ°λ¨ν μ€λͺ
νμλ©΄ CBRμ μ΄λ ν λμμ λΆλ μ λ μ°Έμ‘°κ°, μ¦ μ£Όμκ°μ λΆλ¬μ¨λ€λ μλ―Έμ΄λ©° CBVλ μ£Όμκ°μ΄ μλ λμμ΄ κ°μ§κ³ μλ κ° μ체λ₯Ό κ°μ Έμ¨λ€λ μλ―Έμ
λλ€.
μ΄ CBRκ³Ό CBVμ λνμ μΈ μλ‘λ μ°Έμ‘° νμ
λ³μμ κΈ°λ³Έ νμ
λ³μκ° μμ΅λλ€. κΈ°λ³Έ νμ
λ³μλ CBVμ΄λ©° μ°Έμ‘° νμ
λ³μλ CBRμ
λλ€. λ°λΌμ λ³΄ν΅ λ©μλμ λ§€κ°λ³μλ‘ λκ²¨μ£Όκ² λλ©΄, μ°Έμ‘° νμ
λ³μλ μμ μ μ£Όμκ°μ λκ²¨μ£Όκ² λλ©° κΈ°λ³Έ νμ
λ³μλ μμ μ΄ κ°μ§κ³ μλ κ° μ체λ₯Ό 볡μ¬νμ¬ λκ²¨μ£Όκ² λ©λλ€.
μ΄λ¬ν μ΄μ λ‘ λ§μ½ μ°Έμ‘° νμ
λ³μλ₯Ό μΈμλ‘ λ°μ μ¬μ©νκ² λλ©΄, λ©μλ μ§μ λ΄μμλ§ κ°μ΄ λ°λλ κ²μ΄ μλλΌ λκ²¨μ€ λ³μ κ·Έ μ체μμλ κ°μ΄ λ°λκ² λ©λλ€. μλνλ©΄ μ£Όμμ μ κ·Όνμ¬ κ°μ λ°κΏ¨κΈ° λλ¬Έμ΄μ£ . κ·Έ λ°λλ‘ κΈ°λ³Έ νμ
λ³μλ 볡μ¬ν λ°μ΄ν°λ₯Ό λ°κΎΌ κ²μ΄κΈ° λλ¬Έμ λκ²¨μ€ λ³μ κ·Έ μ체λ κ°μ΄ λ³νμ§ μμ΅λλ€.
μλͺ»λ μ 보λ₯Ό μμ±νλ κ² κ°μ΅λλ€. Kotlin μͺ½μ 곡λΆνλ€κ° μ± μμ μκ²λ μ¬μ€μΈλ°, Javaλ CBRμ΄ μλ CBVκ° μΌλ°μ μ΄λΌκ³ ν©λλ€.Javaμμ μΈμ€ν΄μ€κ° μ λ¬λ λ CBRμ²λΌ 보μ΄μ§λ§, λ겨μ§λ κ°μ΄ 볡μ¬λμ΄μ§ μΈμ€ν΄μ€μ μ£ΌμμΌ λΏμ λλ€. λ°λΌμ κ°μ²΄ μ λ¬ λν CBV μ λλ€.
μ°Έκ³ λ‘ CμΈμ΄μμ μ¬μ©λλ ν¬μΈν° λ³μ λν μ£Όμ κ°μ΄ 볡μ¬λμ΄μ λμ΄κ°λ Call by Value λ°©μμ λλ€. CμΈμ΄μμ λν Call by Reference λ°©μμ 곡μμ μΌλ‘ μ§μνμ§λ μμ£ . κ·Έλ¬λ μλ―Έμ , κ²°κ³Όμ μΌλ‘ Call by Referenceμ κ°μ΄ μ¬μ©ν μ μκΈ° λλ¬Έμ Call by Referenceλ€! λΌκ³ μ€λͺ νλ κ³³λ λ§μ΅λλ€.
==κ³Ό equalsμ μ°¨μ΄μ
==κ³Ό equalsμ λΉκ΅ λ°©μμ μ°¨μ΄μ μ μμμ μΈκΈν CBRκ³Ό CBVμ κ°μ₯ ν° μ°κ΄μ΄ μμ΅λλ€. equals λ©μλλ λΉκ΅νκ³ μ νλ λμμ λ΄μ© μ체λ₯Ό λΉκ΅νμ§λ§ == μ°μ°μλ λΉκ΅νκ³ μ νλ λμμ μ£Όμκ°μ λΉκ΅ν©λλ€. λ°λΌμ μμμ μΈκΈν String λ³μ κ°μ λΉκ΅μμ ==μ μ¬μ©νκ² λλ©΄ μ£Όμκ°μ΄ λ€λ₯΄λ νμ falseλ₯Ό 리ν΄ν μ λ°μ μλ κ²μ΄μ£ . νμ§λ§ κ·Έ λ°λλ‘ equals()λ₯Ό μ¬μ©νκ² λλ©΄ ν΄λΉ κ°μ²΄κ° κ°μ§κ³ μλ κ°μ λΉκ΅νκΈ° λλ¬Έμ μ£Όμκ° λ¬λΌλ κ°μ κ°μ κ°μ§κ³ μλ String λ³μ κ°μ λΉκ΅λ 무쑰건 trueλ₯Ό 리ν΄νκ² λ©λλ€.