==? 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๋ฅผ ๋ฆฌํดํ๊ฒ ๋ฉ๋๋ค.