String
String์ ์ฐธ์กฐ ํ์
์ด์ง๋ง, ๋ฆฌํฐ๋ด ํ๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๋ค.
String str = "Hello";
Java
๋ณต์ฌ
๋ถ๋ณ์ฑ
String์ ํ ๋ฒ ์์ฑ๋๋ฉด ๊ฐ์ ์ฝ๊ธฐ๋ง ํ ์ ์๊ณ , ๋ณ๊ฒฝํ ์ ์๋ค.
new ํค์๋๋ก ์์ฑํ ๊ฒฝ์ฐ Heap์ ๊ฐ๋ณ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๊ฒ ๋๊ณ ,
๋ฆฌํฐ๋ด๋ก ์์ฑํ ๊ฒฝ์ฐ Heap์ String Pool์ ์์ฑํ๊ฒ ๋๋ค.
๋์ผํ ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด String Pool์ ์๋ ์ฃผ์ ๊ฐ์ ๋ฐํํ๊ณ ,
๋์ผํ ๊ฐ์ด ์กด์ฌํ์ง ์๋ค๋ฉด, ์๋ก์ด ์ฃผ์๋ฅผ ํ ๋นํ๊ณ ํด๋น ์ฃผ์๋ฅผ ๋ฐํํ๋ค.
๋ง์ฝ A๋ผ๋ String ๋ฆฌํฐ๋ด์ ์ ์ฅํ๊ณ ์๋ ๋ณ์์ ๋ค๋ฅธ String ๋ฆฌํฐ๋ด B๋ฅผ ๋์
ํ๋ค๋ฉด?
Java๋ B๋ผ๋ ๋ฆฌํฐ๋ด์ด String Pool์ ์กด์ฌํ์ง ์๋๋ค๋ฉด String Pool์ ์์ฑ ํ ์ฐธ์กฐ ๊ฐ์ ๋ฐํํ๊ณ ,
๋ง์ฝ B๋ผ๋ ๋ฆฌํฐ๋ด์ด ์กด์ฌํ ๊ฒฝ์ฐ B์ ์ฐธ์กฐ ๊ฐ์ ๋ฐํํ์ฌ ์ค๋ณต ์์ฑ๋์ง ์๋๋ก ํ๋ค.
๋ ๋ง์
(+) ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด ๊ฒฐํฉ์ ์ํํ๋ฉด, ๊ธฐ์กด ๋ฌธ์์ด์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์๋๋ผ ๋ด์ฉ์ด ํฉ์ณ์ง ์๋ก์ด String ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก Value๊ฐ ๊ฐ์ง ์์ String ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ผ๊ณ ํ ์ ์๊ณ , ์ด ๊ฐ์ฒด๋ ๋ณํ์ง ์๋ ๊ฐ์ฒด์ด๋ค.
String์ ๋ถ๋ณ์ฑ ๋๋ถ์ Thread-Safe๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
โ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฅ์ ์ ๊ฐ๋๋ค.
String์ด ๊ตฌํํ๋ ์ธํฐํ์ด์ค
1.
java.io.Serializable:
โข
๊ฐ์ฒด์ ์ง๋ ฌํ(serialization) ๋ฐ ์ญ์ง๋ ฌํ(deserialization)๋ฅผ ์ง์ํ๋ ์ธํฐํ์ด์ค์
๋๋ค.
โข
String ํด๋์ค๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๊ณ ๋ค์ ๋ณต์ํ ์ ์์ต๋๋ค.
2.
java.lang.CharSequence:
โข
๋ฌธ์ ์ํ์ค๋ฅผ ๋ํ๋ด๋ ์ธํฐํ์ด์ค๋ก, String ํด๋์ค๋ CharSequence ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
โข
๋ฌธ์์ด์ ๋ค๋ฃจ๋ ๋ค์ํ ์์
์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
3.
java.lang.Comparable<String>:
โข
๊ฐ์ฒด์ ์์๋ฅผ ์ ์ํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ก, String ํด๋์ค๋ Comparable<String>์ ๊ตฌํํ์ฌ ๋ฌธ์์ด์ ๋น๊ตํ ์ ์๋๋ก ํฉ๋๋ค.
4.
java.lang.constant.Constable:
โข
Java 12์์ ๋์
๋ ์์ ํํ์ ์ํ ์ธํฐํ์ด์ค์
๋๋ค.
โข
String ํด๋์ค๋ Constable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ์์ ํํ์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
5.
java.lang.constant.ConstantDesc:
โข
Java 12์์ ๋์
๋ ์์ ์ค๋ช
์ ์ํ ์ธํฐํ์ด์ค์
๋๋ค.
โข
String ํด๋์ค๋ ConstantDesc ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ์์์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ค์ฏ ๊ฐ์ง ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํจ์ผ๋ก์จ String ํด๋์ค๋ ์ง๋ ฌํ, ๋ฌธ์ ์ํ์ค ์ฒ๋ฆฌ, ๋น๊ต, ์์ ํํ, ์์ ์ค๋ช
๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.


๊ธฐ๋ณธ ์๋ฃํ