๐ฉต Java์ ๋ฐ์ดํฐ ํ์ ์ด๋?
๋ฐ์ดํฐ ํ์ ์ ๋ณ์๋ฅผ ์ ์ธํ ๋, ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ์ ์ฅ๋๋์ง ๋ช ์ํด ์ฃผ๋ ๊ฒ์ ๋๋ค.
๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ฑ์ ๋ฐ์ดํฐ๋ค์ ๊ตฌ๋ถํ๋ ์ญํ ์ ๋๋ค.
๐ ๋ฐ์ดํฐ ํ์ ์ ์ญํ
- ๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ฐ์ดํฐํ์ ์ ๋ฐ๋์ ํ์ํฉ๋๋ค. Java์์ ๋ฐ์ดํฐํ์ ์ ์ฌ์ฉํ๋ ์ด์ ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ํ์ ์์ ์ฑ (Type Safety) : ๋ฐ์ดํฐ ํ์ ์ ๋ช ์ํจ์ผ๋ก์จ, ์ปดํ์ผ๋ฌ๋ ํ์ ์ ๋ง์ง ์๋ ๊ฐ์ด ๋ณ์์ ํ ๋น๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด int age๋ผ๋ ๋ณ์์ 'ํ ๋ผ'๋ผ๋ ๊ฐ์ ๋ฃ์ผ๋ฉด ์ซ์๊ฐ ์๋๋ฏ๋ก ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ : ํ๋ก๊ทธ๋จ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ต์ฅํ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ํ์ ์ ๋ช ์ํจ์ผ๋ก์จ ๋ณ์์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ : ๋ฐ์ดํฐ ํ์ ์ ํน์ ์ฐ์ฐ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ปดํ์ผ๋ฌ์ JVM์ ๋ฐ์ดํฐ ํ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ธ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ํจ์ ์ค๋ฒ๋ก๋ฉ : ๋ฉ์๋ ์ด๋ฆ์ด ๊ฐ๋๋ผ๋ ๋งค๊ฐ๋ณ์์ ๋ฐ์ดํฐ ํ์ ์ด ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ๋ฉ์๋๋ก ์ธ์ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๋ค์ํ ํ์ ์ ์ธ์๋ฅผ ๋ฐ์ ๋ค๋ฅด๊ฒ ๋์ํ๊ฒ ํ ์ ์์ต๋๋ค.
- ์ถ์ํ์ ์บก์ํ : ๋ฐ์ดํฐ ํ์ ์ ํ์ฉํด ๊ตฌํ ์ธ๋ถ์ฌํญ์ ์จ๊ธฐ๊ณ , ์ฌ์ฉ์์๊ฒ ์ค์ํ ์ ๋ณด๋ง์ ์ ๊ณตํ๋ ์ถ์ํ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
- ๋ช ์์ ํํ : ๋ฐ์ดํฐ ํ์ ์ ๋ณ์๋ ๋ฆฌํด ๊ฐ์ด ์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋์ง ๋ช ์์ ์ผ๋ก ํํํฉ๋๋ค. ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ ๋๋ค.
๐ฉถ ๋ฐ์ดํฐ ํ์ ์ ์ข ๋ฅ
- Java์์์ ๋ฐ์ดํฐํ์ ์ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฒ์ฃผ๋ก ๋๋ ์ ์์ต๋๋ค. ๊ธฐ๋ณธํ(Primitive types)๊ณผ ์ฐธ์กฐํ(Reference types)์ ๋๋ค.
1๏ธโฃ ๊ธฐ๋ณธํ(Primitive types)
๊ธฐ๋ณธํ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ๋จํ ๊ฐ๋ค์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, Java์์๋ ์ด 8๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ์ํ์ผ๋ก๋ INT ํ์ ์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ํ์ | ์ค๋ช |
byte | 8๋นํธ ์ ์. ๋ฒ์๋ -128์์ 127๊น์ง์ ๋๋ค. |
short | 16๋นํธ ์ ์. ๋ฒ์๋ -32,768์์ 32,767๊น์ง์ ๋๋ค. |
int | 32๋นํธ ์ ์. ๋ฒ์๋ -2^31์์ 2^31-1๊น์ง์ ๋๋ค. |
long | 64๋นํธ ์ ์. ๋ฒ์๋ -2^63์์ 2^63-1๊น์ง์ ๋๋ค. |
float | 32๋นํธ ๋ถ๋ ์์์ . ์ ๋ฐ๋๊ฐ ๋ฎ์ ์ค์๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. |
double | 64๋นํธ ๋ถ๋ ์์์ . ์ ๋ฐ๋๊ฐ ๋์ ์ค์๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. |
char | 16๋นํธ ์ ๋์ฝ๋ ๋ฌธ์. ํ๋์ ๋ฌธ์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. |
boolean | ๋ ผ๋ฆฌ ๊ฐ(true ๋๋ false)์ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. |
๊ธฐ๋ณธํ ํ์ ์ ํน์ ๊ท์น์ด๋ ํ๊ธฐ๋ฒ์ด ์์ต๋๋ค. ์์๋ก ๋ช ๊ฐ์ง๋ฅผ ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
byte num1 = 30;
short num2 = 40;
int num3 = 100; // ๋ณ๋ ์ ๋ฏธ์ฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
long bigNumber = 10000000000L; // ์ซ์ ๋์ 'L' ๋๋ 'l'์ ๋ถ์ฌ์ ์ ์ํฉ๋๋ค.
float pi = 3.14f; // ์ซ์ ๋์ 'F' ๋๋ 'f'๋ฅผ ๋ถ์ ๋๋ค.
double e = 2.718281828459045; // ์ซ์ ๋์ 'D'๋๋ 'd'๋ฅผ ๋ถ์ ๋๋ค. ์ด๋ ์๋ต์ด ๊ฐ๋ฅํฉ๋๋ค.
char letter = 'A'; // ๋จ์ผ ๋ฌธ์๋ก, ์ธ์ฉ๋ถํธ( ' ) ์์ ๋ฌธ์ ํ๋๋ฅผ ๋ฃ์ด์ ํํํฉ๋๋ค.
boolean isRabbit = true; // 'true' ๋๋ 'false' ๊ฐ๋ง ๊ฐ์ง ์ ์์ต๋๋ค.
Char ํ์ ์ ๋จ์ผ 16๋นํธ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
โ UNICODE๋?
์ ๋์ฝ๋๋ ์ ์ธ๊ณ์ ๋ค์ํ ๋ฌธ์ ์์คํ ์ ์ผ๊ด๋๊ฒ ํํํ๊ธฐ ์ํ ๊ตญ์ ์ ์ธ ํ์ค์ ๋๋ค. ๊ฐ ๋ฌธ์๋ ๊ณ ์ ํ ์ฝ๋ ํฌ์ธํธ(code point)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด๋ ' U+' ๋ค์์ 16์ง์๋ก ํํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ผํด ์ํ๋ฒณ 'A'์ ์ ๋์ฝ๋๋ U+0041์ ๋๋ค.
โ Java์ char
Java์์ char๋ 16๋นํธ(2๋ฐ์ดํธ) ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด, 0๋ถํฐ 65535๊น์ง์ ๊ฐ์ ํํํ ์ ์์ต๋๋ค. ์ด ๋ฒ์๋ ์ ๋์ฝ๋์ ๊ธฐ๋ณธ ๋ค์ค ์ธ์ด ํ๋ฉด(Basic Multilingual Plane, BMP)์ ํด๋นํฉ๋๋ค. BMP๋ ์ ๋์ฝ๋ ๋ฌธ์ ์ค ๊ฐ์ฅ ํํ ์ฌ์ฉ๋๋ 65,536๊ฐ์ ๋ฌธ์๋ฅผ ํฌํจํฉ๋๋ค.
char letter1 = 'A'; // 'A'์ ์ ๋์ฝ๋๋ U+0041
char letter2 = 'a'; // 'a'์ ์ ๋์ฝ๋๋ U+0061
2๏ธโฃ ์ฐธ์กฐํ(Reference types)
์ฐธ์กฐํ ๋ฐ์ดํฐ ํ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ค๋ก, ๊ทธ ์ฃผ์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ(๊ฐ์ฒด)๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ต๋๋ค.
์ฐธ์กฐํ ํ์ ์ ๋ณ์๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ฏ๋ก, ๋ณ์๋ฅผ ํตํด ๊ฐ์ฒด์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฑฐ๋ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค.
โ๏ธ ์ฐธ์กฐํ์ ๋ํ ์ค๋ช ์ ๋ค์์ ์์ธํ ์ ๋ฆฌํด์ ์ฌ๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ง๊ธ์ ์ด๋ฐ ๊ฒ ์๋ค ํ๊ณ ๋์ด๊ฐ์ฃผ์ธ์.
์ฐธ์กฐํ ์ข ๋ฅ | ์ค๋ช |
ํด๋์ค(Class) | ์ฌ์ฉ์๊ฐ ์ ์ํ ํด๋์ค ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์: String, Integer, File ๋ฑ |
์ธํฐํ์ด์ค(Interface) | ํน์ ์ธํฐํ์ด์ค ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. |
๋ฐฐ์ด(Array) | ๊ฐ์ ํ์ ์ ์ฌ๋ฌ ๋ณ์๋ฅผ ์ ์ฅํ๋ ์ฐ์๋ ๊ณต๊ฐ์ ์ฐธ์กฐํฉ๋๋ค. |
์ด๊ฑฐ(Enum) | ์ด๊ฑฐ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. |
null | ์ด๋ค ๊ฐ์ฒด๋ ์ฐธ์กฐํ์ง ์๋ ๋น ์ฐธ์กฐ๋ฅผ ์๋ฏธํฉ๋๋ค. |
Java์์ ๋ฐ์ดํฐํ์ ์ ํ๋ก๊ทธ๋จ์ ํจ์จ์ฑ, ์์ ์ฑ,
๊ทธ๋ฆฌ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
'โJava' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java ์ดํดํ๊ธฐ] 6. ์๋ฐ์ ํจ์(๋ฉ์๋)๋? (2) (2) | 2024.05.04 |
---|---|
[Java ์ดํดํ๊ธฐ] 5. ์๋ฐ์ ํจ์(๋ฉ์๋)๋? (1) (2) | 2024.05.04 |
[Java ์ดํดํ๊ธฐ] 4. ์๋ฐ์ ์ฐ์ฐ์ (2) | 2024.04.26 |
[Java ์ดํดํ๊ธฐ] 2. ์๋ฐ์ ๋ณ์์ ์์ (2) | 2024.04.26 |
[Java ์ดํดํ๊ธฐ] 1. ์๋ฐ๋? (4) | 2024.04.20 |