๐Ÿ“‚์›น ๊ฐœ๋ฐœ(Web)/์ž๋ฐ”(JAVA)

๋ณ€์ˆ˜ ์šฉ์–ด, ๊ทœ์น™๊ณผ ํƒ€์ž…

๐Ÿ‘ฉ‍๐ŸŽ“์ธํ…”๋ฆฌ๊ฐ์ž๐Ÿฅ” 2024. 11. 18. 04:57

Intro. ๋ณ€์ˆ˜๋ž€?

  ๋ณ€์ˆ˜(variable)๋ž€ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ฒˆ์ง€์— ๋ถ™์ด๋Š” ์ด๋ฆ„์ด๋‹ค. *ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ฒˆ์ง€์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฌดํ•œ์ • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ๋งž์€ ํƒ€์ž…(์ž๋ฃŒํ˜•)์„ ์“ฐ๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. 

 

  *ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์—๋Š” ์˜ค๋กœ์ง€ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ์ž๋ฐ”์—์„œ๋Š” ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ํ•œ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋ณ€์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–ด๋””์— ์ €์žฅํ•˜๊ณ  ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ• ์ง€๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์šด์˜์ฒด์ œ๊ฐ€ ์ •ํ•œ๋‹ค. ์ž๋ฐ”์˜ ๊ฒฝ์šฐ๋Š” JVM์ด ํ•œ๋‹ค. 

 

1. ๋ณ€์ˆ˜ ๊ทœ์น™

(1) ๋ณ€์ˆ˜ ๋ช…๋ช… ๊ทœ์น™

๋ณ€์ˆ˜ ์ด๋ฆ„์„ ํ†ตํ•ด ์˜๋ฏธ๋ฅผ ์‰ฝ๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋„๋ก '์˜๋ฏธ ์žˆ๋Š”' ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง€์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ๊ธธ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋ถ„ํžˆ ๊ธธ์–ด๋„ ์ƒ๊ด€ ์—†๋‹ค. 

Camel case๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž๋Š” ํŠน์ˆ˜๋ฌธ์ž ํ˜น์€ ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค. 

 

(2) ์˜ˆ์•ฝ์–ด ์‚ฌ์šฉ ๋ถˆ๊ฐ€

๋ณ€์ˆ˜ ๋ช…์œผ๋กœ ์˜ˆ์•ฝ์–ด๋ฅผ ์“ธ ์ˆ˜ ์—†๋‹ค. ์˜ˆ์•ฝ์–ด๋Š” ์ด๋ฏธ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํŠน์ •ํ•œ ์˜๋ฏธ๋กœ ์“ฐ์ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉํ•  ์‹œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

โ€ป e.g) boolean, short, private, class, new, true, package .... 

 

(3) ๋กœ์ปฌ๋ณ€์ˆ˜

๋ณ€์ˆ˜๋Š” ์ž์‹ ์ด ์„ ์–ธ๋œ ์œ„์น˜์—์„œ ์ž์‹ ์ด ์†ํ•œ ๋ธ”๋ก ๋‚ด๋ถ€๊นŒ์ง€๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฐ–์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋ฉ”์„œ๋“œ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๋™์œผ๋กœ ์—†์–ด์ง„๋‹ค. 

 

 

2. ๋ณ€์ˆ˜์™€ ๊ด€๋ จ๋œ ์šฉ์–ด

  • ๋ณ€์ˆ˜ ์„ ์–ธ: ๋ณ€์ˆ˜์— ์–ด๋–ค ํƒ€์ž…(์ž๋ฃŒํ˜•)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ธ์ง€, ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€ ๊ฒฐ์ •

๋ณ€์ˆ˜ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„;  // ๋ณ€์ˆ˜์˜ ์„ ์–ธ ๋ฐฉ๋ฒ•

int age;	// ์ •์ˆ˜(int)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” age ๋ณ€์ˆ˜ ์„ ์–ธ
double value;	// ์‹ค์ˆ˜(double)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” value ๋ณ€์ˆ˜ ์„ ์–ธ

 

  • ํ• ๋‹น: ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๊ฒƒ
  • ์ฐธ์กฐ: ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ
  • ๊ฐ’ ์ €์žฅ: ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” ๋Œ€์ž… ์—ฐ์‚ฐ์ž(=)์„ ์‚ฌ์šฉ, ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ์™ผ์ชฝ์— ๋Œ€์ž…
int score;	 // ๋ณ€์ˆ˜ ์„ ์–ธ
score = 90;		// ๊ฐ’ ์ €์žฅ
  • ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”: ๋ณ€์ˆ˜์— ์ตœ์ดˆ๋กœ ๊ฐ’์ด ์ €์žฅ๋  ๋•Œ ๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ
  • **์ดˆ๊ธฐ๊ฐ’: ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ๋•Œ ์‚ฌ์šฉ๋œ ๊ฐ’

  **๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐ๊ฐ’์ด ์ €์žฅ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ฝ์„ ์ˆ˜ ์—†๋‹ค. 

Why?

์•„์ง ๋ฉ”๋ชจ๋ฆฌ ๋ฒˆ์ง€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ!!! ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค. 

 

 

3.  ๋ณ€์ˆ˜์˜ ํƒ€์ž… - ๊ธฐ๋ณธํƒ€์ž…(primitive type)๊ณผ ์ฐธ์กฐํƒ€์ž…(reference type)

(1) ๊ธฐ๋ณธํƒ€์ž…(primitive type)

๋…ผ๋ฆฌํ˜•(boolean), ๋ฌธ์žํ˜•(char), ์ •์ˆ˜ํ˜•(byte, short, int, long), ์‹ค์ˆ˜ํ˜•(float, double)

๊ณ„์‚ฐ์„ ์œ„ํ•œ ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ๋ชจ๋‘ 8๊ฐœ. 

 

↓๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ์™ธ์šฐ๋Š” ๋ฒ•!

boolean์€ true์™€ false ๋‘ ๊ฐ€์ง€ ๊ฐ’๋งŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋˜๋ฏ€๋กœ ๊ฐ€์žฅ ์ž‘์€ ํฌ๊ธฐ์ธ 1 byte.
char์€ ์ž๋ฐ”์—์„œ ์œ ๋‹ˆ์ฝ”๋“œ(2 byte ๋ฌธ์ž์ฒด๊ณ„)๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ 2 byte.
byte๋Š” ํฌ๊ธฐ๊ฐ€ 1byte๋ผ์„œ byte.
int(4 byte)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์งง์•„์„œ short(2 byte), ๊ธธ์–ด์„œ long(8 byte).
float๋Š” ์‹ค์ˆ˜๊ฐ’์„ ๋ถ€๋™์†Œ์ˆ˜์ (floating-point) ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— float(4 byte).
double์€ float๋ณด๋‹ค ๋‘ ๋ฐฐ์˜ ํฌ๊ธฐ(8 byte)๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— double. 

 

ํ—ˆ์šฉ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•œ ๊ฐ’์„ ๋Œ€์ž…ํ–ˆ์„ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

(2) ์ฐธ์กฐํƒ€์ž…(reference type)

๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค. 8๊ฐœ์˜ ๊ธฐ๋ณธํ˜•์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํƒ€์ž….

 

3. ๋ฌธ์ž ๋ฆฌํ„ฐ๋Ÿด

๋ฆฌํ„ฐ๋Ÿด: ์†Œ์Šค ์ฝ”๋“œ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ์˜ํ•ด ์ง์ ‘ ์ž…๋ ฅ๋œ ๊ฐ’

char ํƒ€์ž…์€ 2 byte ํฌ๊ธฐ์˜ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”๋ฐ, ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์ •์ˆ˜์ด๋ฏ€๋กœ char๋„ ์ •์ˆ˜ ํƒ€์ž…์— ์†ํ•œ๋‹ค. 

'A'๋Š” int ํƒ€์ž… ๋ณ€์ˆ˜์—๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

char var1 = 'A';
int var2 = 'A';
System.out.println(var1);	// A๋ฅผ ์ถœ๋ ฅ
System.out.println(var1);	// 65๋ฅผ ์ถœ๋ ฅ

 

4. ํ˜•๋ณ€ํ™˜

(1) ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜(Promotion)

               ←
 ํฐ ํ—ˆ์šฉ ๋ฒ”์œ„ ← = ← ์ž‘์€ ํ—ˆ์šฉ ๋ฒ”์œ„ ํƒ€์ž…

 

์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์€ ๋ง ๊ทธ๋Œ€๋กœ ์ž๋™์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.  ์ฝ”๋“œ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ดํ•ด๊ฐ€ ๋” ๋น ๋ฅผ ๊ฒƒ์ด๋‹ค. 

 

byte byteValue = 10;	// ์ž‘์€ ๊ฐ’
int intValue = byteValue; 	// ํฐ ๊ทธ๋ฆ‡์œผ๋กœ ์˜ฎ๊ฒจ์ง=์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜๋จ

๊ฐ’์ด ์ž๋™์œผ๋กœ ํฐ ๊ทธ๋ฆ‡(ํฐ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜)์œผ๋กœ ์˜ฎ๊ฒจ์กŒ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. 

 

โ€ป ์˜ˆ์™ธ: byte ํƒ€์ž…์€ cahr ํƒ€์ž…์œผ๋กœ ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜๋  ์ˆ˜ ์—†๋‹ค. 

Why? char ํƒ€์ž…์˜ ํ—ˆ์šฉ๋ฒ”์œ„๋Š” ์Œ์ˆ˜๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋ฐ,  byte ํƒ€์ž…์€ ์Œ์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

(2) ๊ฐ•์ œ ํ˜•๋ณ€ํ™˜(Casting)

ํฐ ํ—ˆ์šฉ ๋ฒ”์œ„ ํƒ€์ž…์„ ์ž‘์€ ํ—ˆ์šฉ ๋ฒ”์œ„ ํƒ€์ž…์œผ๋กœ ๊ฐ•์ œ๋กœ ๋‚˜๋ˆ ์„œ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์บ์ŠคํŒ… ์—ฐ์‚ฐ์ž ๊ด„ํ˜ธ ( )๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ํƒ€์ž…์€ ๋‚˜๋ˆ„๋Š” ๋‹จ์œ„์ด๋‹ค. 

                    ←
์ž‘์€ ํ—ˆ์šฉ ๋ฒ”์œ„ ํƒ€์ž„ ← = ← (์ž‘์€ ํ—ˆ์šฉ ๋ฒ”์œ„ ํƒ€์ž…) ํฐ ํ—ˆ์šฉ ๋ฒ”์œ„ ํƒ€์ž…

 

๊ฐ•์ œ ํ˜•๋ณ€ํ™˜. 

int intValue = 10;
byte byteValue = (byte) intValue; 	// ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜

 

 


์ฐธ๊ณ ์„œ์  | ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ” | ์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค | ์ž๋ฐ”์˜ ์ •์„ ๊ธฐ์ดˆํŽธ | THE ์นœ์ ˆํ•œ ์ž๋ฐ” ์ž…๋ฌธ