"์๋ฐ๋ฅผ ์ ๋ง ๋ญ๋๊น.. ์ก๊ตฐ์ฌ๊ดํ๊ต ๋์ค๋ ์ค๋์ฅ ๊ฐ์ ๋๋์ด๋ค.. ์์ฒญ ๋๋จํ์ง๋ง ์๊ฒฉํด์ ์ซ๋ค๊ณ ํด์ผํ ๊น..
๋ถ๋ช ๋ณด์ด๊ธฐ์ ๊ฐ์๋ณด์ด์ง๋ง ๋ค๋ฅธ๊ฒ ๋๋ฌด ๋ง๋ค. ์คํฌ๋ฆฝํธ ์ธ์ด๊ฐ ๊ด๋ํ๊ฒ์ ๋นํด ์๋ฐ๋ ์๋นํ ์๊ฒฉํ๋ค. ์๊ฒฉํ ๊ณณ์์ ์ค๋ ์ฅ์ ์ ๋ถ๋ช ํ์ง๋ง ๊ทธ๋งํผ ๊ฐ๋ฐ์๋ค์ ๊ฐ๋ ๊ดด๋กญํ๋ค."
๊ทธ๋์ ์ด๋ฒ ๊ธ์๋ ์ ๋ฅผ ์์ฒญ๋๊ฒ ๊ดด๋กญํ๋ equals() ์ == ์ ์ฐจ์ด๋ฅผ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.
๊ธ์ ์์ ์ดํดํ๋๋ฐ ํฐ ๋์์ ์ฃผ์ ๋ฐ ๋ณธ๋ถ์ฅ๋๊ป ๊ฐ์ฌ์ ์ธ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค!!
l String ๋ณ์๋ฅผ ์์ฑํ ๋
String์ int, float, double ๋ฑ๊ณผ ๋ค๋ฅด๊ฒ ์๋ฐ์์๋ ํด๋์ค๋ก ํตํฉ๋๋ค. ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐ์ดํฐํ๊ณผ ๋ค๋ฅด๊ฒ ๊ฐ์ฒด๋ก๋ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋ฆฌํฐ๋ด์ ์ด์ฉํ์ฌ String ์์ฑ
- new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ String ๊ฐ์ฒด ์์ฑ
package sec01.seco1;
public class testClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "test"; // ๋ฆฌํฐ๋ด ์ฌ์ฉ
String str2 = new String("test"); // new ์ฐ์ฐ์ ์ฌ์ฉ
System.out.println("str => " + str);
System.out.println("str2 => " + str2);
}
}
๋ฆฌํฐ๋ด๋ก ์์ฑํ ์ String์ String Constant Pool ์ด๋ผ๋ ๊ณณ์ ์์ฑ๋๊ณ , new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด Heap ์ด๋ผ๋ ๊ณณ์ ์ ์ฅ๋ฉ๋๋ค. ๋ ๋ฐฉ์๋ค ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ์์ญ์ ํ ๋นํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฐ๋ก ๋ถํฐ ์๊ธฐํ๋ฉด equals ๊ฒฝ์ฐ ๋ฌธ์์ด ์์ฒด๋ฅผ ๋น๊ตํ๋ ๊ฒ์ด๊ณ , == ๋ String์ ์ฃผ์๋ฅผ ๋น๊ตํฉ๋๋ค.
package sec01.seco1;
public class testClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "test"; // ๋ฆฌํฐ๋ด ์ฌ์ฉ
String str2 = new String("test"); // new ์ฐ์ฐ์ ์ฌ์ฉ
String str3 = "test";
if(str == str2) {
System.out.println("str ์ str2 ๋ ๊ฐ์ต๋๋ค.");
}else{
System.out.println("str ์ str2 ๋ ๋ค๋ฆ
๋๋ค."); // ์ถ๋ ฅ
}
if(str == str3) {
System.out.println("str ์ str3 ๋ ๊ฐ์ต๋๋ค."); // ์ถ๋ ฅ
}else {
System.out.println("str ์ str3 ๋ ๋ค๋ฆ
๋๋ค.");
}
if(str.equals(str3)) {
System.out.println("equal ํจ์๋ฅผ ์ด์ฉํ str ์ str3 ๋ ๊ฐ์ต๋๋ค."); //์ถ๋ ฅ
}else {
System.out.println("equal ํจ์๋ฅผ ์ด์ฉํ str ์ str3 ๋ ๋ค๋ฆ
๋๋ค.");
}
}
}
๊ฐ๊ฐ์ ์กฐ๊ฑด๋ฌธ์์ ๊ณผ์ฐ ์ด๋ป๊ฒ ์ถ๋ ฅ๋ ๊น์??
์ฒซ๋ฒ์งธ ์กฐ๊ฑด๋ฌธ์ "๋ค๋ฆ ๋๋ค"๊ฐ ์ถ๋ ฅ๋๊ณ , ๋๋ฒ์งธ ์กฐ๊ฑด๋ฌธ์ "๊ฐ์ต๋๋ค"๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๋ฆฌํฐ๋ด๋ก ์์ฑ์์ผ์ค String ์ ๊ฒฝ์ฐ ๋ฌธ์์ด ๋น๊ต ํ ๋ ๋ฌธ์์ด์ด ๊ฐ์ผ๋ฉด true๋ฅผ ์ถ๋ ฅํ์ง๋ง, ๋ฆฌํฐ๋ด๋ก ์์ฑ์์ผ์ค String์ new ์ฐ์ฐ์ฌ๋ฅผ ์ด์ฉํด ์์ฑํ String์ ๋ถ๋ช ๋ฌธ์์ด์ ๊ฐ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ์ฃผ์ ์์ญ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅด๋ค๊ณ ์ถ๋ ฅ์ด ๋ฉ๋๋ค. ์ฆ ==๋ ์ฃผ์๋ฅผ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ๋ฆฌํฐ๋ด๊ณผ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ์ ๋๋ ๋ค๋ฅด๋ค๊ณ ๋์ฌ์ ๋ฐ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ๋ฒ์งธ equals๋ ๋ฌธ์์ด ์์ฒด๋ฅผ ๋น๊ตํ๋ค๊ณ ํ์ผ๋ฏ๋ก ์ฃผ์๊ฐ ๋ฌ๋ผ๋ true๋ฅผ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
๋ฌธ์์ด์ ๊ฐ์ฒด๋ก ๋ฐ์ ๊ฒฝ์ฐ ๊ทธ ๊ฐ์ฒด์ ๋ํ ๋น๊ต๋ String ์ฃผ์๊ฐ์ด ๋ฌ๋ผ์ ๋น๊ต ํ ์ ์์ต๋๋ค.
l new ์ฐ์ฐ์๋ฅผ == ๋ก ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ์์๊น?
package sec01.seco1;
public class testClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = new String("test");
System.out.println(str == "test"); //false
System.out.println(str.equals("test")); //true
System.out.println(str.toString() == "test"); //false
System.out.println((String) str == "test"); //false
System.out.println(String.valueOf(str) == "test"); //false
}
}
new ์ฐ์ฐ์๋ก ์์ฑํ String์ ๊ทธ๋ผ == ๋น๊ต๋ฅผ ํ์ฌ์ true๋ก ๋์ค๊ฒ ํด์ค์ ์์๊น๋ผ๋ ๊ถ๊ธ์ฆ์ด ์๊ฒผ์ต๋๋ค. ๊ทธ๋์ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ง ํ ์คํ์์ผ๋ดค๋๋ฐ ๋๋ฒ์งธ ๋ง๊ณ ๋ ๋ค false๊ฐ ๋์์ต๋๋ค.
์ฒซ๋ฒ์งธ ๊ฒฝ์ฐ, ์์์ ๋ค๋ฃจ์๋ฏ์ด ๋น์ฐํ ์ฃผ์ ๋น๊ต๋ฅผ ํ์ ๋ ๊ทธ๋ฅ ๋ฌธ์์ด๊ณผ new ์ฐ์ฐ์๋ก ๋ง๋ค์ด์ค String์ ์ฃผ์๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ false๊ฐ ๋ง์ต๋๋ค.
๋๋ฒ์งธ ๊ฒฝ์ฐ, equasl()๋ฅผ ์ด์ฉํ์ฌ String์ ์ฃผ์๊ฐ ์๋ ๋ฌธ์์ด ์์ฒด๋ฅผ ๋น๊ตํจ์ผ๋ก true๊ฐ ๋ง์ต๋๋ค.
์ธ๋ฒ์งธ,๋ค๋ฒ์งธ, ๋ค์ฏ๋ฒ์งธ ๊ฒฝ์ฐ new ์ฐ์ฐ์๋ก ์์ฑ์ ํ์์ Object ํํ๋ฅผ String ํํ๋ก ๋ฐ๊ฟ์ค ํ == ๋น๊ต๋ฅผ ํ๋ฉด ๋ ์ค ์์๋๋ฐ false๊ฐ ์ถ๋ ฅ๋์ต๋๋ค.
์ ํํ ์ด์ ๋ ์๋์ ์์ง๋ง, ์ ์ถ์ธก์ผ๋ก๋ new ์ฐ์ฐ์๋ก ์์ฑํ์ ๋น์ str ๊ฐ์ฒด๋ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์์ ๋ง์ ์ฃผ์ ์์ญ์ ๊ฐ๊ณ ์์ ๊ฒ์ ๋๋ค. ํ์ง๋ง casting, toString, String.valueOf ํจ์์ ๊ฒฝ์ฐ ๋ฌธ์์ด์ ํ์ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด์ง ๊ทธ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๋ฐ๊ฟ์ฃผ์ง๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด์ ํํ๋ ๋ฐ๋์์ง๋ง ์ฃผ์ ์์ญ์ ์ฌ์ ํ ๊ทธ๋๋ก ์ด๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ฅผ ๋น๊ตํด์ฃผ๋ == ํ ๊ฒฝ์ฐ ์ฃผ์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ false๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋๋ค.
์ ๊ฒฐ๋ก ์ ๋ฐ๋ผ์ str ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๋ณ๊ฒฝ์์ผ์ฃผ์ง ์๋ ํ ์ด๋ฏธ ์์ฑ๋ ๊ฐ์ฒด์ ๋ํด ์๋ฌด๋ฆฌ ํํ๋ฅผ ๋ฐ๊ฟ๋ณด์๋ == ๋น๊ต๋ ํ ์ ์์ต๋๋ค.
์ ํํ ๋ต์ ์๋์ง๋ง, ์ ๋ ์ด๋ ๊ฒ ์๊ฐํฉ๋๋ค. ํน์ ๋ต์ ๋ํด ์์๋ ๋ถ์ด ์์ผ์๋ฉด ์๋ ค์ฃผ์ญ์์ค.
l ์์ฝ
๋ฌธ์์ด ๋น๊ต ํ ๊ฒฝ์ฐ ์ฌ๋งํ๋ฉด ๊ทธ๋ฅ equals๋ฅผ ์ฌ์ฉํด๋ผ ์ ๋๋ค.
- equals : ๋ฌธ์์ด ์์ฒด ๋น๊ต
- == : ์ฃผ์ ๋น๊ต
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค.
"๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๊ด์ ์งํฅ ํ๋ก๊ทธ๋จ(AOP) ์ดํดํ๊ธฐ (0) | 2021.01.03 |
---|---|
[Spring] ์คํ๋ง DI, IoC ์ดํดํ๊ธฐ (4) | 2021.01.02 |
[Java] HashMap ์ฌ์ฉํ๊ธฐ (0) | 2020.12.30 |
[Java] StringUtils.isEmpty ์ฌ์ฉํ๊ธฐ (0) | 2020.12.30 |
[MyBatis] mybatis์์ ๋ค์ ์ํ์ค ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ (0) | 2020.12.29 |