1. ๋ฐ์ดํฐ ํ์ ์ ์ข ๋ฅ
ํฌ๊ฒ ๊ธฐ๋ณธ ํ์ ๊ณผ ์ฐธ์กฐ ํ์ ์ผ๋ก ๋๋์ด์ง๋ค. ๋ ํ์ ์ ๋๋๋ ๊ธฐ์ค์ ๋ฌด์จ ๊ฐ์ด ์ ์ฅ๋๋๊ฐ ์ด๋ค.
2. ๊ฐ ํ์ ๋ค์ด ๊ฐ์ ์ ์ฅํ๋ ์๋ฆฌ
๊ธฐ๋ณธํ์ ์ ํด๋น ๋ณ์์ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅํ๋ค. (call by value) ๋ฐ๋ผ์ int a = 1 ์ด๋ผ๋ฉด ๋ง ๊ทธ๋๋ก a์๋ 1์ด ์ ์ฅ๋์ด ์๋ค.
b์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก double b = 3.5๋ผ๋ฉด b์๋ 3.5๊ฐ ์ ์ฅ ๋์ด ์๋ค.
๋ฐ๋ฉด, ์ฐธ์กฐํ์ ์ ํด๋น ๋ณ์์ "๊ฐ์ด ์ ์ฅ๋์ด ์๋ ์ฃผ์"๊ฐ ์ ์ฅ๋์ด์๋ค. ๋ฐ๋ผ์ ํด๋น ๋ณ์์ ์ ์ฅ๋ ์ฃผ์๋ก ๊ฐ์ ๊ฐ์ ํ์ธํ๋ค. ๋ง์ฝ String c = "์ฒผ์๋ ์ฐ์น ๋ชปํ๋ค." ์ด๊ณ , ํด๋น ๋ฌธ์์ด์ด ํ์ ์ ์ฅ๋ ์ฃผ์๊ฐ 'ae123' ์ด๋ผ๋ฉด, ํ์ ae123์ผ๋ก ๊ฐ์ ๊ฐ์ ํ์ธํ๋ค.
3. String ๊ฐ์ ==์ผ๋ก ๋น๊ตํ๋ฉด ์๋๋ ์ด์ ?
๋ง์ฝ
String a = "a"
String b = "a"
String c = new String("a")
๋ผ๊ณ ํ ๋ ๊ฐ์ ๋น๊ตํด๋ณด๋ฉด
System.out.println(a==b);
System.out.println(a.equals(b));
System.out.println(a==c);
System.out.println(a.equals(c));
// ๊ฒฐ๊ณผ
// ์์์๋ถํฐ true, true false, true
์ด๋ ๊ฒ ๋์จ๋ค.
์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
== ์ String์ ์ฃผ์๊ฐ ๊ฐ๋ฅดํค๋ ๋ด์ฉ๋ฌผ๋ค์ ๋น๊ตํ๋ ๊ฒ์ด ์๋๋ผ, ๋จ์ํ๊ฒ Stack ์ ๊ฐ ๋ณ์๊ฐ ์ ์ฅํ๋ ์ฃผ์๊ฐ์ ์๋ก ๋น๊ตํ๋ค. a์ b์ ๊ฒฝ์ฐ ๊ฐ๋ฅดํค๋ ์ฃผ์๊ฐ ๋ง์ ๊ฐ์ผ๋ฏ๋ก, ๋์ผํ๋ค๊ณ ๋์ค์ง๋ง, c๋ ์๋ก ๋์ ํ ๋น์ ๋ฐ์๊ธฐ ๋๋ฌธ์ a,b์๋ ์ฃผ์๊ฐ์ด ๋ค๋ฅด๋ค.
๋ฐ๋ผ์ ==์ผ๋ก ๋น๊ต์ a์ b๋ ๊ฐ๋ค๊ณ , a์ c๋ ๊ฐ์ง ์๋ค๊ณ ๋์จ๋ค.
๊ฐ์ ์๋ฆฌ๋ก a == "a" ๋ ์๋ก ์ฃผ์๊ฐ ๋ค๋ฅด๋ฏ๋ก ๊ฐ์ง ์๋ค๊ณ ๋์จ๋ค.
์ด ๊ฒฝ์ฐ ๋งค์๋ .equals()๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ์ด ๋งค์๋๋ ๋ณ์์ ์ฃผ์๊ฐ ๊ฐ๋ฅดํค๋ ๋ด์ฉ๋ฌผ ์์ฒด๋ฅผ ๋น๊ตํ๋ค.
๋ฐ๋ผ์ a.equals(c) ํน์ a.equals("a")๋ ์๋ก ๊ฐ์ ๊ฐ์ด๋ผ๊ณ ์ ํํ ๋์จ๋ค.
4.์ ๊ฒ
1. ๋ฐ์ดํฐ ํ์
์ ์ข
๋ฅ
2. ๊ฐ ํ์
์ด ๊ฐ์ ์ ์ฅํ๋ ์๋ฆฌ
3. String๊ฐ์ ==์ผ๋ก ๋น๊ตํ๋ฉด ์๋๋ ์ด์ ๋ฌด์์ ์จ์ผํ๋?