String
String ๋ฌธ์์ด
Heap ๋ฉ๋ชจ๋ฆฌ ์์ญ์ String ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
=> ๋ด์ฉ๋ฌผ์ ๋์ผ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ์ง ์๊ณ ๋ฌด์กฐ๊ฑด ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค. => garbage๊ฐ ๋๋ฉด garbage collection์ ์ํด ์ ๊ฑฐ๋๋ค.
string constant pool ๋ฉ๋ชจ๋ฆฌ ์์ญ์ String ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
=> Heap ์ด ์๋ String ์์ํ์ ์์ฑํ๋ค. => ๊ธฐ์กด ์ธ์คํด์ค์ ์ฃผ์๋ฅผ ๋ฆฌํด, ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๋๋ค. => JVM์ด ๋๋ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง๋๋ค.
String vs StringBuffer ๋น๊ต์ ๋ฐ๋ฅธ ์ฐจ์ด์
ํด๊ฒฐ์ฑ
?
=> ์์ ์ฝ๋๋ ํ๋ก์ ํธ์ toString ๊ณผ์ ์ด๋ ๋์ผํ ๊ณผ์ ์ ๊ฐ์ง๊ณ ์๋ค s1์ด String์ด๊ธฐ ๋๋ฌธ์ toString()์ ๋ฐ๋ก String์ ๋ง๋ค์ง ์๊ณ ๊ทธ๋ฅ s1 ์ฃผ์๋ฅผ ๋ฆฌํดํ๋ค. ๊ฒฐ๊ตญ ์ธ์คํด์ค์ด ์ฃผ์๋ฅผ ๋น๊ตํ์ฌ ๋์ผํ ๊ฐ์ด ๋๊ฒ ๋๋ค
String - mutable vs immutable ๊ฐ์ฒด
String ๊ฐ์ฒด๋ immutable ๊ฐ์ฒด์ด๋ค. ์ฆ ํ ๋ฒ ๊ฐ์ฒด์ ๊ฐ์ ๋ด์ผ๋ฉด ๋ณ๊ฒฝํ ์ ์๋ค.
StringBuffer๋ mutable ๊ฐ์ฒด์ด๋ค. ์๋์ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ํด๋์ค์ด๋ค.
StringBuffer๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์์ฌํญ!
StringBuffer์ ๋ด์ฉ๋ฌผ์ ๋น๊ตํ ๋ equals() ์ฌ์ฉํด๋ด์ผ ์์ฉ์๋ค. == ์ฐ์ฐ์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
Stringbuffer์ object์์ ์์ ๋ฐ์ equals()๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ง ์์๊ธฐ ๋๋ฌธ์์ค๋ฒ๋ผ์ด๋ฉ์ ํ์ง ์์ object์ equals() ์ ์ฉ๋๊ฒ ๋๋ค
๋คํ์ ๋ณ์์ toString
=> ๋ ํผ๋ฐ์ค๋ฅผ ํตํด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ํญ์ ์๋ ๊ฐ์ฒด์ ํด๋์ค๋ถํฐ ๋ฉ์๋๋ฅผ ์ฐพ์ ์ฌ๋ผ๊ฐ๋ค. => ๋ฐ๋ผ์ obj๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ํด๋์ค๊ฐ String์ด๊ธฐ ๋๋ฌธ์ obj.toString()์ String ํด๋์ค๋ถํฐ ํด๋น ๋ฉ์๋๋ฅผ ์ฐพ๋๋ค. => String ํด๋์ค๋ toString()์ ์ค๋ฒ๋ผ์ด๋ฉ ํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ obj.toString()์ String ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ ํ toString()์ ํธ์ถํ๋ ๊ฒ์ด๋ค.
์ด๋ฐ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์งํฅ์ ๋ฐ๋ณต์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ C๋ณด๋ค ๋๋ฆฌ๋ค
๋คํ์ ๋ณ์์ ํ๋ณํ, toLoverCaser()
obj๋ฅผ ํตํด ์๋ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ํธ์ถ
Wrapper ํด๋์ค
๋ํผ ํด๋์ค์ ์ฃผ์ ์ฉ๋: => primitive data type์ ๊ฐ์ ๊ฐ์ฒด๋ก ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ค. => primitive data type์ ๊ฐ์ ๊ฐ์ฒด์ ๋ด์ ์ ๋ฌํ๊ณ ์ถ๋ค๋ฉด ์ธ์ ๋ wrapper ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ฉด ๋๋ค.
auto-boxing/auto-unboxing ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ํ ๊ฐ์ ๋ฉ์๋๋ก primitive data type๊ณผ ํด๋์ค๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ด๋ค
Integer obj1 = new Integer(100);
new๋ฅผ ์์ฑํ์ฌ Heap์ ์ธ์คํด์ค๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์ฃผ์๊ฐ ์๋๋ผ Data์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ==๋ฅผ ํตํด ๋น๊ตํ๋ฉด ๋์ผํ ๊ฐ์ด ๋์ค์ง ์๋๋ค
Integer obj1 = 100;
์ ์ ๋ฆฌํฐ๋ด์ ์ด์ฉํ์ฌ auto-boxing์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒฝ์ฐ constants pool์ ์์ฑ
๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ Integer ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ ์กด์ฌํด์ผ ํ ํ์๊ฐ ์๋ค.
Integer obj5 = Integer.valueOf(100);
์์ ๋์ผํ ์ฝ๋์ด๋ค
int i2 = obj2.intValue();
auto-unboxing ???
Last updated
Was this helpful?