Java์์ int์ boolean๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ํ์ ์ ๋น๊ต๋ == ์ด๋ผ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ตํ๋ค.
ํ์ง๋ง String์ฒ๋ผ Class์ ๊ฐ์ ๋น๊ตํ ๋๋ equals() ๋ผ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋น๊ตํ๋ค.
์ด์ ๋ํด ์ข ๋ ์์ธํ ํํค์ณ๋ณด์.
String ๋ณ์ ์์ ์ ์ฃผ์ ํ ๋น
String ๋ณ์๋ฅผ ์์ฑํ ๋๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
1. ๋ฆฌํฐ๋ด(literal)์ ์ด์ฉํ ๋ฐฉ์
2. new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ๋ฐฉ์
๋ฆฌํฐ๋ด(literal) | string constant pool*์ด๋ผ๋ ์์ญ์ ์กด์ฌ |
new๋ฅผ ํตํด ์์ฑ | Heap ์์ญ์ ์กด์ฌ |
String str1 = "apple"; // ๋ฆฌํฐ๋ด ์ด์ฉ
String str2 = new String("banana"); // new ์ฐ์ฐ์ ์ด์ฉ
๋ฆฌํฐ๋ด(literal) ์๋ ์๋ฆฌ
String์ ๋ฆฌํฐ๋ด๋ก ์ ์ธํ๋ฉด ๋ด๋ถ์ ์ผ๋ก String์ intern()๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
intern() ๋ฉ์๋๋ ์ฃผ์ด์ง ๋ฌธ์์ด์ด string constant pool์ ์กด์ฌํ๋์ง ๊ฒ์ํ๋ค.
์กด์ฌํ๋ฉด ๊ทธ ์ฃผ์๊ฐ์ ๋ฐํํ๊ณ ์๋ค๋ฉด string constant pool์ ๊ฐ์ ๋ฃ๊ณ ์๋ก์ด ์ฃผ์๊ฐ์ ๋ฐํํ๋ค.
== equals ์ฐจ์ด
== | ์ฃผ์๊ฐ ๋น๊ต |
equals() | ๋์์ ๊ฐ ์์ฒด ๋น๊ต |
์ ์ฝ๋๋ฅผ ๋ณด๋ฉด,
== ํค์๋๋ก ๊ฐ์ฒด๊ฐ ๊ฐ๋ค๋ฉด ๋ ํ์ธํ์ง ์๊ณ true๋ฅผ ๋ฆฌํดํ๋ค.
๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ ์ธ์๊ฐ String์ด๋ผ๋ฉด ๋ฌธ์์ด์ ๋น๊ตํ์ฌ ๋์ผํ์ง์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๊ณ ์๋ค.
Call by value, Call by reference ์ฐจ์ด
๊ธฐ๋ณธ ํ์ ์ int, charํ ๋ฑ์ Call by Value ํํ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ๋์์ ์ฃผ์๊ฐ์ ๊ฐ์ง์ง ์๋ ํํ๋ก ์ฌ์ฉ๋๋ค.
ํ์ง๋ง String์ ์ผ๋ฐ์ ์ธ ํ์ ์ด ์๋๋ผ ํด๋์ค๋ค.
ํด๋์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก Call by Reference ํํ๋ก ์์ฑ ์ ์ฃผ์๊ฐ์ด ๋ถ์ฌ๋๋ค.
์ฆ, Stringํ์ ์ ์ ์ธํ์ ๋ ๊ฐ์ ๊ฐ์ ๋ถ์ฌํ๋๋ผ๋ ์๋ก๊ฐ์ ์ฃผ์๊ฐ์ด ๋ค๋ฅธ ๊ฒ์ด๋ค.
== ๋ก ๋ฌธ์์ด์ ๋น๊ต ํ์ง ์๋ ์ด์
public class HelloWorld {
public static void main(String[] args) {
String s1 = "HelloWorld";
String s2 = new String("HelloWorld");
if(s1 == s2) {
System.out.print("O");
}else {
System.out.print("X");
}
}
}
// ์คํ๊ฒฐ๊ณผ
// X
๋ฌธ์์ด equals() ๋น๊ต
public class HelloWorld {
public static void main(String[] args) {
String s1 = "HelloWorld";
String s2 = new String("HelloWorld");
if(s1.equals(s2)) {
System.out.print("O");
}else {
System.out.print("X");
}
}
}
// ์คํ๊ฒฐ๊ณผ
// O
String ํด๋์ค์์ ์๋ equals๋ผ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด
๋ ๋น๊ต ๋์์ ์ฃผ์๊ฐ์ด ์๋ ๋ฐ์ดํฐ๊ฐ์ ๋น๊ตํ๋ค.
์ฐธ๊ณ
'๐ Development > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java ์๋ฐ] WORA(Write Once Run Anywhere) ์ด๋? (0) | 2023.07.13 |
---|---|
Java ๋? Java ์๊ฐ (0) | 2023.07.05 |