๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โ˜•Java

[Java ์ดํ•ดํ•˜๊ธฐ] 3. ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋ž€?

by Luvbit 2024. 4. 26.


๐Ÿฉต 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์—์„œ ๋ฐ์ดํ„ฐํƒ€์ž…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ํšจ์œจ์„ฑ, ์•ˆ์ •์„ฑ,

๊ทธ๋ฆฌ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.