๐ ์ฑ
์๊ฐํ๊ธฐ
๋ด๊ฐ ์ฌ์ฉํ ์๋ฐ์์ ์ ๋ณต ์ฑ
๋งํฌ!
ใด ๊น๋ํ ์ง์, ์ด์ง์คํผ๋ธ๋ฆฌ์ฑ
์ด ์ฑ ์ ๊ณ ๋ฅด๊ฒ ๋ ์ด์ ๋ ์น๊ตฌ์ ์ถ์ฒ์ด์๋ค. ๊ต์ฅํ ๊ผผ๊ผผํ๊ฒ ์ ํ์์ด ์ดํดํ๊ธฐ ์ฝ๋ค๋ ์ด์ ๋ก ์น๊ตฌ๋ ์ด ์ฑ ์ ๊ณจ๋๋ค๊ณ ํ๋ค. ๋๋ ๊ทธ๋์ ๊ทธ๋ฅ ๋ฐ๋ผ์๋ค. ์ค์ ๋ก ์ฑ ์ ์ดํด๋ณด๋ ๊ต์ฅํ ๊ผผ๊ผผํ๊ฒ ์ ๋ฆฌ๋์ด์๋ค. ๋ค๋ฅธ ์ฑ ์ ๋ณธ ์ ์ด ์์ด ๋น๊ต๊ฐ ๋ถ๊ฐํ์ง๋ง, ๋ด ์๊ฐ์ผ๋ก ์ฒ์ ์๋ฐ๋ฅผ ๊ณต๋ถํ๋ค๋ฉด ์ด ์ฑ ์ ๊ฐ์ง๊ณ ์ถฉ๋ถํ ๋ฐ๋ผ๊ฐ ์ ์์ ๋ฏ ํ๋ค. ๋ชจ๋๋ค ํ์ดํ !!
๐ฐ
โ๏ธ ๊ฐ์ฒด ์์ฑ์ ์ฃผ์๊ฐ_ 189p
• ๊ฐ์ฒด ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑ
String str1 = new String("์๋
");
String str2 = str1;
str1 = "์๋
ํ์ธ์";
System.out.println(str1);
System.out.println(str2);
new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. new ์ฐ์ฐ์๋ ์ธ์คํด์ค(๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ผ๊ฐ ๊ฐ์ฒด)๋ฅผ ์์ฑํ๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ํ ์์ญ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋๋ค. ๊ทธ ๊ณต๊ฐ์ ์ฐธ์กฐ๊ฐ์(์ฌ๊ธฐ์ str1๊ณผ str2๊ฐ ๋๋ค) ๊ฐ์ฒด์๊ฒ ๋ฐํํ์ฌ ์ฃผ๊ณ ์ด์ด์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
์์๊ฐ ์ค์ํ๋ค. str1์ "์๋ "์ด ๋ค์ด๊ฐ๋ ๊ฒ์ด ์ฒซ๋ฒ์งธ๊ฐ ๋๋ค. ๊ทธ ํ ๋๋ฒ์งธ๊ฐ str1์ด str2์ ๋ค์ด๊ฐ๋ ๊ฒ์ผ๋ก, str2๋ "์๋ "์ ๊ฐ์ง๊ฒ ๋๋ค. ์ธ๋ฒ์งธ์ str1์ด "์๋ "์์ "์๋ ํ์ธ์"๋ก ๋ณ๊ฒฝ์ด ๋๋ค.
์ถ๋ ฅ์ด ๋ ๋ ์ด ์์์ ๋ง์ถฐ ์ถ๋ ฅ์ด ๋๋ค. str1์ ๋ง์ง๋ง ์ฝ๋ "์๋ ํ์ธ์"๋ก ๋ณ๊ฒฝ๋ ๋ฐ๊ฐ ์์ผ๋ "์๋ ํ์ธ์"๋ก ์ถ๋ ฅ์ด ๋ ๊ฒ์ด๋ค. str2๋ "์๋ "์ด ์ ์ ๋ ํ ๋ณ๊ฒฝ๋ ๊ฒ์ด ์์ผ๋ ์ฌ์ ํ "์๋ "์ ๊ฐ๋ฆฌํค๊ณ ์์ ๊ฒ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ๋ [ ๋ฉ์๋(ํด๋์ค) ์์ญ - ์คํ ์์ญ - ํ ์์ญ ]์ผ๋ก ๋์ด์๋ค. ์ด๋ String์ ๋ฉ์๋ ์์ญ์ ์ฌ๋ผ๊ฐ๊ณ str1๊ณผ str2์ ๋ด์ฉ์ด ํ์์ญ์ ๋ช ๋ฒ์ง์ ์์ ๊ฑด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์คํ ์์ญ์ ๋ณด๊ดํ๋ค. ์ฒ์์ ์คํ ์์ญ์์ 100๋ฒ์ง์ str1์ ๋ด์ฉ์ด ์๋ค๊ณ ๊ฐ๋ฆฌํฌ ๊ฒฝ์ฐ ํ ์์ญ 100๋ฒ์ง์ ๊ฐ๋ฉด "์๋ "์ด ์์ ๊ฒ์ด๋ค. ๊ทธ ํ str1์ ๊ทธ๋๋ก str2์ ์ ์ฅํ์ผ๋ str2๋ ๋๊ฐ์ด 100๋ฒ์ง์ "์๋ "์ ๊ฐ๋ฆฌํค๊ณ ์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ str1์ด "์๋ ํ์ธ์"๋ก ๋ฐ๋๋ฉด str1์ ๋ค๋ฅธ ๋ฒ์ง์ "์๋ ํ์ธ์"๊ฐ ์๊ฒ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ str2๋ ์ฌ์ ํ ๋๊ฐ์ด 100๋ฒ์ง๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ ๊ฒ์ด๋ค.
• ๋ฐฐ์ด๊ณผ ์ฐจ์ด์
int[] array1 = new int[] {3, 4, 5};
int[] array2 = array1;
array1[0] = 6; array1[1] = 7; array[2] = 8;
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
๋ฐฐ์ด์ 3๊ณผ 4, 5๋ฅผ array1์ ๋ฃ์๊ณ , array2๋ array1๊ณผ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋ค. ์ด๋ array1์ ๋ํ ๋ฐ์ดํฐ๋ฅผ 6๊ณผ 7, 8๋ก ์์ ํด๋ณด๊ฒ ๋ค. ๋ถ๋ช ์์์ ๋ฌธ์์ด์ ์์ ํ์๋ ๋ ๊ฐ์ฒด์ ๊ฐ์ด ๊ฐ์ด ์์ ๋์ง ์์๋ค. ํ์ง๋ง ๋ฐฐ์ด์ ๋ค๋ฅด๋ค. ๋ฐฐ์ด์ ๋ฒ์ง์ ์๋ก์ด ๊ฐ์ด ์ ๋ ฅ๋๋ฉด ๋ค๋ฅธ ๋ฒ์ง์ ๋ฐ์ดํฐ๋ฅผ ์๋กญ๊ฒ ๋ง๋๋ ๊ฒ์ด ์๋, ๋ณธ๋์ ์์น์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ฌ ๊ฐ์ ๋ฃ๊ฒ๋๋ค.
๊ทธ๋ ๊ธฐ์ ๊ฒฐ๊ณผ๋ array1๊ณผ array2 ๋ชจ๋ 6,7,8์ ์ถ๋ ฅํ๊ฒ ๋๋ค.
• ๋ฆฌํฐ๋ด๋ก ์ ๋ ฅํ ๋ฐ์ดํฐ์ ์ฐจ์ด
String str1 = new String("์๋
");
String str2 = "์๋
";
String str3 = "์๋
";
String str4 = new String("์๋
");
System.out.println(str1 == str4);
System.out.println(str2 == str3);
str2์ str3์ ๋ฆฌํฐ๋ด์ ๋ฐ๋ก ์ ๋ ฅํ ๋ฐ์ดํฐ๊ฐ ๋๋ฉฐ, ๊ทธ ๋ฐ์ดํฐ๋ ์๋ก ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ค. ๋ง์ฝ ์ด๋ ๊ฒ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ๋ฐฉ์์ผ๋ก String ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒฝ์ฐ, JVM์ ๋จผ์ String Pool์์ ํด๋น ๋ฌธ์์ด์ด ์๋์ง ํ์ธํ๋ค. ๊ทธ๋ ๊ฒ ๊ฐ์ ๋ฌธ์์ด์ด ์๋ค๋ ๊ฒ์ด ํ์ธ๋๋ฉด ๊ธฐ์กด ๋ฌธ์์ด ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๋ฐํํ๊ฒ ๋๊ณ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ค.
new ์ฐ์ฐ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒฝ์ฐ String Pool์ด ์๋ํ์ง ์๋๋ค. new๋ ๋งค๋ฒ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๋์ผํ ๊ฐ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก str1๊ณผ str4๋ ์๋ก ๋ค๋ฅธ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ค. ๊ทธ๋ฆฌ๊ณ str2์ str3์ ์๋ก ๊ฐ์ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ค.
Q. new๊ฐ ์ ํํ ๋ฌด์์ธ๊ฐ?
A. new ์ฐ์ฐ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ์ค, ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ธ๋ถ์์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ถ๋ฆฌ๋์ด ๊ฐ์ด ๋ณ๊ฒฝํ๊ธธ ์ํ ๊ฒฝ์ฐ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ฉด ๋๋ค.
โ๏ธ + ์ฐ์ฐ_ 195p
• ๋ฌธ์์ด + ๋ฌธ์์ด ์ฐ์ฐ
String str1 = "์๋
" + "ํ์ธ์" + "!";
System.out.println(str1);
๊ฐ์ฒด๋ ๋ช ๊ฐ ๋ง๋ค์ด์ง๊น? ์ฒ์์ "์๋ "๊ณผ "ํ์ธ์" ๊ทธ๋ฆฌ๊ณ "!"๊น์ง 3๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค. ๊ทธ ํ + ์ฐ์ฐ์๋ก ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ด๋ค. "์๋ " + "ํ์ธ์"๋ก "์๋ ํ์ธ์"๊ฐ ๋ง๋ค์ด์ ธ ์ด 4๊ฐ์ ๊ฐ์ฒด๊ฐ ๋๊ณ "!"๊ฐ ์ฐ๊ฒฐ๋๋ฉฐ "์๋ ํ์ธ์!"๊ฐ ์์ฑ๋์ด ์ด 5๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
• ์๋ฃํ์ ๋ฐ๋ฅธ + ์ฐ์ฐ
System.out.println(1 + 2 + "์๋
");
System.out.println("์๋
" + 1 + 2);
์ฒซ๋ฒ์งธ ์ฝ๋๋ถํฐ ์ดํด๋ณด๋ฉด ์ฐ์ํด์ ๋์ค๋ 1๊ณผ 2๋ก ์๋ฃํ์ด ์ซ์ ์๋ฃํ์ผ๋ก ๋์ผํ๋ค. ์ด๋ ๊ฒ ๋์ผํ ์๋ฃํ์ด ์ฐ๋ฌ์ ๋์ฌ ๊ฒฝ์ฐ ๋ํ๊ธฐ ์ฐ์ฐ์ผ๋ก ์์ฉํ์ฌ 3 + "์๋ " ํํ๋ก ์ด๋ค์ง๊ฒ ๋๋ค. ํ์ง๋ง ๋๋ฒ์งธ ์ฝ๋์ฒ๋ผ "์๋ "๊ณผ 1์ด +์ฐ์ฐ์๋ก ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์๋ฃํ์ผ๋ก ์๋ 1์ด ๋๊ณ ๊ทธ ํ์ ๋์ค๋ 2 ๋ํ ์๋ 1๋ก 1์ด ์์ด๋ ์ซ์ ์๋ฃํ์ผ๋ก ์ธ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ 12๊ฐ ์ต์ข ์ ์ธ ๊ฐ์ด ๋ ๊ฒ์ด๋ค.
'๐ Java > ์๋ฐ์์ ์ ๋ณต' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฐ ์์ ์ ๋ณต_ 7์ฅ ํด๋์ค ๋ด๋ถ ๊ตฌ์ฑ ์์(ํ๋,์ง์ญ๋ณ์,๋ฉ์๋,์์ฑ์) (0) | 2024.11.21 |
---|---|
[Java] ์๋ฐ ์์ ์ ๋ณต _6์ฅ ํด๋์ค์ ๊ฐ์ฒด์ ๊ฐ๋ (0) | 2024.11.13 |
[Java] ์๋ฐ ์์ ์ ๋ณต_ 5์ฅ ์ฐธ์กฐ์๋ฃํ(๋ฐฐ์ด) (0) | 2024.08.07 |
[Java] ์๋ฐ ์์ ์ ๋ณต_ 4์ฅ ์ ์ด๋ฌธ (0) | 2024.08.05 |
[Java] ์๋ฐ ์์ ์ ๋ณต_ 3์ฅ ์ฐ์ฐ์ (0) | 2024.07.09 |