โ String ํด๋์ค ๊ฐ๋ตํ ๊ตฌ์กฐ
public final class String {
private final byte[] value;
public String concat(String str) {...}
public int length() {...}
...
}
- byte ๋ฐฐ์ด์ ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๋ค.(java 9๋ถํฐ. ์ด์ ์๋ char๋ฐฐ์ด์ ๋ณด๊ดํ์๋ค)
- ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ค๋ฃจ๊ธฐ ๋ถํธํ ๋ฌธ์๋ ํด๋์ค ๋ด๋ถ(byte ๋ฐฐ์ด)์ ๊ฐ์ถ๊ณ
๊ฐ๋ฐ์๊ฐ ๋ฌธ์์ด์ ๋ค๋ฃจ๊ธฐ ํธ๋ฆฌํ๋๋ก ์ฌ๋ฌ ํธ๋ฆฌํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
๐ฅ String ํด๋์ค์์ + ์ฐ์ฐ
- String ํด๋์ค๋ ์ฐธ์กฐํ ์๋ฃํ์ด๋ค. ์ฆ, ๋ณ์์ ์ฐธ์กฐ๊ฐ์ด ๋ค์ด ์๋ค.
- ๋ฐ๋ผ์ ์์น์ ์ผ๋ก๋ + ์ฐ์ฐ์ ํ ์ ์๋ค. (์ฐธ์กฐ๊ฐ๋ผ๋ฆฌ ๋ํ ์ ์์ผ๋๊น!)
- ๋ฌธ์์ด๋ผ๋ฆฌ ํฉ์น๋ ค๋ฉด ์์น์ ์ผ๋ก๋ String ํด๋์ค๊ฐ ์ ๊ณตํ๋ concat() ๊ณผ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ์๋ฐ์์ ๋ฌธ์์ด์ ํน๋ณํ + ์ฐ์ฐ์ ์ ๊ณตํ๋ค. (ํธ์์ฑ์ ์ํด์)
๐ฅ String ํด๋์ค์ ๋น๊ต
- String ๋ผ๋ฆฌ ๋น๊ตํ ๋์๋ ํญ์ == ๋น๊ต๊ฐ ์๋๋ผ equals() ๋น๊ต๋ฅผ ํด์ผ ํ๋ค.
- String ํด๋์ค๋ ์ฐธ์กฐํ์ด๊ธฐ ๋๋ฌธ!
- String ํด๋์ค์๋ ๋ด๋ถ ๋ฌธ์์ด ๊ฐ์ ๋น๊ตํ๋๋ก equals() ๋ฉ์๋๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์๋ค.
โ ๋ฌธ์์ด ๋ฆฌํฐ๋ด
- ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์๋ฐ๋ ์คํ ์์ ์ ํ์์ญ์ ๋ฌธ์์ด ํ(Pool)์ String ์ธ์คํด์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๋ค.
- (new๋ก ์ ์ธํ๋ ๊ฒ ์๋ `String str = "Hello, World!";` ์ฒ๋ผ ์ ์ธํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ปํจ)
- ๋ฆฌํฐ๋ด๋ก ์ ์ธํ ๋ฌธ์์ด์ด ๋ฌธ์์ด ํ์ ์ด๋ฏธ ์กด์ฌํ๋ฉด, ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ง ์๊ณ ์ด๋ฏธ ์๋ ๋ฌธ์์ด์ ์ฐธ์กฐํ๋ค.
- ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋น์ฐํ == ๋น๊ต์ ์ฑ๊ณตํ๋ค.
- ๋ฌธ์์ด ํ์์ ๋ฌธ์๋ฅผ ์ฐพ์ ๋์๋ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
โ String์ ๋ถ๋ณ ๊ฐ์ฒด์ด๋ค.
- ๋ฐ๋ผ์ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ ๊ธฐ์กด ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋์ ์ ์๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ๋ฐํํ๋ค.
- ๊ฐ๋ณ String ๊ฐ์ฒด๋ก๋ StringBuilder๊ฐ ์๋ค.
- StringBuilder ํด๋์ค๋ ๋ด๋ถ์ final์ด ์๋, ๋ณ๊ฒฝํ ์ ์๋ byte๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์๋ค.
- StringBuilder๋ ๋ฉ์๋ ์ฒด์ด๋์ด ๊ฐ๋ฅํ๋ค.
โ Reference
'๊ฐ์ธ ๊ณต๋ถ > Java, Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Cloneable๊ณผ Objects.clone() / Shallow Copy์ ๋ํด์ (0) | 2024.08.05 |
---|---|
[Java] @ParameterizedTest ์จ๋ณด๊ธฐ (0) | 2024.07.20 |
[Java] ๋์ผ์ฑ, ๋๋ฑ์ฑ (0) | 2024.06.26 |
[Java] Reflection (0) | 2023.11.17 |
[Java] equals(), hashCode() (0) | 2023.10.25 |