๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Language/Java

[Java]์ž๋ฐ”์—์„œ์˜ ํ˜• ๋ณ€ํ™˜: ์ž๋™ ๋ณ€ํ™˜๊ณผ ๊ฐ•์ œ ๋ณ€ํ™˜

by YJ Dev 2024. 4. 25.
728x90
๋ฐ˜์‘ํ˜•
SMALL

์ž๋ฐ”์—์„œ ํ˜• ๋ณ€ํ™˜์€ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์ž๋ฐ”์—์„œ๋Š” ์ž๋™ ํ˜• ๋ณ€ํ™˜๊ณผ ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ” ํ˜• ๋ณ€ํ™˜


1. ์ž๋™ ํ˜• ๋ณ€ํ™˜๐Ÿฑ‍๐Ÿ

์ž๋™ ํ˜• ๋ณ€ํ™˜์€ ์ž‘์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์—์„œ ํฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ์˜ ๋ณ€ํ™˜์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, int์—์„œ double๋กœ์˜ ๋ณ€ํ™˜์€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์ด ์—†๋Š” ์•ˆ์ „ํ•œ ๋ณ€ํ™˜์ด๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ํ˜• ๋ณ€ํ™˜์„ ํ•ด์ค๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ž‘์€ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ํฐ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€์ž…๋  ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ๊ฑฐ๋‚˜ ์—†๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ž๋™ ํ˜• ๋ณ€ํ™˜์˜ ๋Œ€ํ‘œ์ ์ธ ํ—ˆ์šฉ ๋ฒ”์œ„ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค: byte < short, char < int < long < float < double
(๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” float์ด long๋ณด๋‹ค ๋” ์ž‘์ง€๋งŒ ๊ฐ’์˜ ํ—ˆ์šฉ ๋ฒ”์œ„๊ฐ€ ๋” ์ปค์„œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.)

์ด๋Ÿฌํ•œ ํ˜• ๋ณ€ํ™˜์€ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ”์œ„๊ฐ€ ๋„“์€ ์ž๋ฃŒํ˜•์— ๋ฒ”์œ„๊ฐ€ ์ข์€ ์ž๋ฃŒํ˜•์ด ๋Œ€์ž…๋  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

// int ํƒ€์ž…์ด byte ํƒ€์ž…๋ณด๋‹ค ํ—ˆ์šฉ ๋ฒ”์œ„๊ฐ€ ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์ฝ”๋“œ๋Š” ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์ด ๋ฉ๋‹ˆ๋‹ค.
byte byteNum = 10;
int intNum = byteNum;

// ์ •์ˆ˜ํƒ€์ž…์ด ์‹ค์ˆ˜ํƒ€์ž…์œผ๋กœ ๋Œ€์ž…๋  ๊ฒฝ์šฐ์—๋Š” ๋ฌด์กฐ๊ฑด ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์ด ๋ฉ๋‹ˆ๋‹ค.
int intVal = 100;
double doubleVal = intVal;

// char ํƒ€์ž…์˜ ๊ฒฝ์šฐ int ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋ฉด ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์ด int ํƒ€์ž…์— ๋Œ€์ž…๋ฉ๋‹ˆ๋‹ค.
char charVal = 'A';
int intChar = charVal;

// byte ํƒ€์ž…์€ char ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 
// ์ด๋Š” char ํƒ€์ž…์˜ ํ—ˆ์šฉ ๋ฒ”์œ„๊ฐ€ ์Œ์ˆ˜๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
// byte byteValue = 65;
// char charValue = byteValue; // ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ

// int ํƒ€์ž…์ด long์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋Š” ์˜ˆ์ œ
int intValue = 100; // int ํƒ€์ž…์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”
long longValue = intValue; // int๊ฐ€ long์œผ๋กœ ์ž๋™ํ˜•๋ณ€ํ™˜๋˜์–ด ๋Œ€์ž…๋จ

// float ํƒ€์ž…์ด double๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋Š” ์˜ˆ์ œ
float floatValue = 3.14f; // float ํƒ€์ž…์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”
double doubleValue = floatValue; // float๊ฐ€ double๋กœ ์ž๋™ํ˜•๋ณ€ํ™˜๋˜์–ด ๋Œ€์ž…๋จ


์ž๋™ํƒ€์ž… ๋ณ€ํ™˜์—๋Š” ์˜ˆ์™ธ
๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ์˜ˆ์ œ์—์„œ byte ํƒ€์ž…์ธ byteValue ๋ณ€์ˆ˜๋ฅผ char ํƒ€์ž…์ธ charValue ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ byte ํƒ€์ž…์€ ์Œ์ˆ˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, char ํƒ€์ž…์€ ์–‘์ˆ˜๋งŒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, byte ํƒ€์ž…์˜ ํ—ˆ์šฉ ๋ฒ”์œ„์™€ char ํƒ€์ž…์˜ ํ—ˆ์šฉ ๋ฒ”์œ„๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ๋Ÿฌ๋Š” byte ํƒ€์ž…์—์„œ char ํƒ€์ž…์œผ๋กœ์˜ ์ž๋™ ๋ณ€ํ™˜์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
โš ๏ธErrorโš ๏ธType mismatch: cannot convert from byte to char
(์œ ํ˜• ๋ถˆ์ผ์น˜: byte์—์„œ char๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)


2. ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜๐Ÿฑ‍๐Ÿ‘ค

์ž๋ฃŒํ˜•์˜ ํ—ˆ์šฉ ๋ฒ”์œ„๊ฐ€ ํฐ ํƒ€์ž…์€ ์ž‘์€ ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํฐ ๊ฐ’์—์„œ ์ž‘์€ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ•์ œํ˜• ๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜์€ ์บ์ŠคํŒ… ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ด๋•Œ ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ํƒ€์ž…์€ ์ž‘์€ ํƒ€์ž…์œผ๋กœ ์ชผ๊ฐœ์–ด ์ €์žฅ๋  ๋‹จ์œ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์˜ ๋ชฉ์ ์€ ์›๋ž˜ ๊ฐ’์ด ์œ ์ง€๋˜๋ฉด์„œ ํƒ€์ž…๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋ฉฐ, ์ž‘์€ ๋ฒ”์œ„์˜ ์ž๋ฃŒํ˜•์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์ œํ˜• ๋ณ€ํ™˜์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ž๋ฃŒํ˜•์˜ ํ—ˆ์šฉ ๋ฒ”์œ„๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. int : ์•ฝ 2,147,483,648 ~ 2,147,483,647
2. short : ์•ฝ -32,768 ~ 32,767

3. byte : ์•ฝ -128๋ถ€ํ„ฐ 127

๋”ฐ๋ผ์„œ, ์ž๋ฃŒํ˜• ๋ณ€ํ™˜ ์‹œ์—๋Š” ๋ณ€ํ™˜๋˜๋Š” ๊ฐ’์ด ๋ณ€ํ™˜๋  ์ž๋ฃŒํ˜•์˜ ํ—ˆ์šฉ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ฐ•์ œํ˜• ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณ€ํ™˜ ์ „์— ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ int ํƒ€์ž…์€ short ํƒ€์ž…๋ณด๋‹ค ๋” ํฐ ๋ฒ”์œ„๋ฅผ, short ํƒ€์ž…์€ byte ํƒ€์ž…๋ณด๋‹ค ๋” ํฐ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ•์ œํ˜• ๋ณ€ํ™˜์€ ์ž‘์€ ๋ฒ”์œ„์˜ ์ž๋ฃŒํ˜•์— ํฐ ๊ฐ’์„ ๋„ฃ์œผ๋ ค๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณ€ํ™˜๋  ์ž๋ฃŒํ˜•์˜ ํ—ˆ์šฉ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€ํ™˜ ์ „์—๋Š” ํ•ญ์ƒ ๋ฒ”์œ„๋ฅผ ํ™•์ธํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

int var1 = 10;
byte var2 = (byte) var1; // int๋ฅผ byte๋กœ ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜
System.out.println(var2); // ๊ฒฐ๊ณผ: 10 (๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜ ํ›„์—๋„ ๊ฐ’ ์œ ์ง€)

long var3 = 300;
int var4 = (int) var3; // long์„ int๋กœ ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜
System.out.println(var4); // ๊ฒฐ๊ณผ: 300 (๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜ ํ›„์—๋„ ๊ฐ’ ์œ ์ง€)

int var5 = 65;
char var6 = (char) var5; // int๋ฅผ char๋กœ ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜
System.out.println(var6); // ๊ฒฐ๊ณผ: 'A' (์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž ์ถœ๋ ฅ)

double var7 = 3.14;
int var8 = (int) var7; // ์‹ค์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜
System.out.println(var8); // ๊ฒฐ๊ณผ: 3 (์ •์ˆ˜ ๋ถ€๋ถ„๋งŒ ๋‚จ๊น€)

3. ์—ฐ์‚ฐ์‹์—์„œ์˜ ํ˜• ๋ณ€ํ™˜๐Ÿ“Š

์ž๋ฐ”๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ค‘ ํ•˜๋‚˜๋Š” ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์ง์ ‘ ์—ฐ์‚ฐํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด 10๊ณผ 20์„ ๋ง์…ˆ ์—ฐ์‚ฐํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ byte ํƒ€์ž… ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

// ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์ง์ ‘ ๋ง์…ˆํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ byte ํƒ€์ž… ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ
byte result = 10 + 20;


์ด ๊ฒฝ์šฐ, ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ 10๊ณผ 20์„ ๋ฏธ๋ฆฌ ์—ฐ์‚ฐํ•˜์—ฌ ๊ฒฐ๊ด๊ฐ’์ธ 30์„ ๋งŒ๋“ค๊ณ , ์ด ๊ฐ’์„ byte ํƒ€์ž… ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹คํ–‰ ์‹œ์—๋Š” ๋ง์…ˆ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹คํ–‰ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ๋Œ€์‹  ๋ณ€์ˆ˜๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ์‹คํ–‰ ์‹œ์—๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์ •์ˆ˜ ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์‹์—์„œ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋˜๋ฉด, byte๋‚˜ short ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋Š” int ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜์–ด ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

byte x = 10;
byte y = 20;
// byte ๋ณ€์ˆ˜๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋  ๋•Œ ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ
// byte result = x + y;

// byte ๋ณ€์ˆ˜๋ฅผ int ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜์—ฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰
int result = x + y;
int x = 10;
int y = 20;
// ์ •์ˆ˜ ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์‹์—์„œ ์‚ฌ์šฉ๋  ๋•Œ๋Š” int ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ 
int result = x + y;


์‹ค์ˆ˜ ์—ฐ์‚ฐ์—์„œ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋™์ผํ•œ ์‹ค์ˆ˜ ํƒ€์ž…์ผ ๊ฒฝ์šฐ ํ•ด๋‹น ํƒ€์ž…์œผ๋กœ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ณ , ๊ฒฐ๊ณผ๋„ ํ•ด๋‹น ํƒ€์ž…์ด ๋ฉ๋‹ˆ๋‹ค.

// ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ float ํƒ€์ž…์ผ ๊ฒฝ์šฐ, float ํƒ€์ž…์œผ๋กœ ์—ฐ์‚ฐ ๋ฐ ๊ฒฐ๊ณผ ์ €์žฅ
float result = 1.2f + 3.4f;


๊ทธ๋Ÿฌ๋‚˜ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ double ํƒ€์ž…์ผ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋„ double ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋„ double ํƒ€์ž…์ด ๋ฉ๋‹ˆ๋‹ค.

int intValue = 10;
double doubleValue = 5.5;
// int ํƒ€์ž… ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ double ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋จ
double result = intValue + doubleValue;


์ •์ˆ˜ ํƒ€์ž…๊ณผ double ํƒ€์ž…์„ ์—ฐ์‚ฐํ•  ๋•Œ, ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ double ํƒ€์ž…์ด๋ฉด ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋„ double ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์—ฐ์‚ฐ๋˜๊ณ , ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋„ double ํƒ€์ž…์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ int ํƒ€์ž… ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ double ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜์–ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ int ํƒ€์ž…์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, double ํƒ€์ž… ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ int ํƒ€์ž…์œผ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•˜์—ฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ์ •์ˆ˜ ํƒ€์ž…๊ณผ double ํƒ€์ž…์„ ์—ฐ์‚ฐํ•  ๋•Œ ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์— ๊ด€ํ•œ ์˜ˆ์‹œ
int intValue = 10;
double doubleValue = 5.5;

// double ํƒ€์ž… ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํฌํ•จ๋œ ์—ฐ์‚ฐ์€ ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋„ double ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋จ
double result1 = intValue + doubleValue; // intValue๊ฐ€ double๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜์–ด 10.0 + 5.5๊ฐ€ ๋˜์–ด ๊ฒฐ๊ณผ๋Š” 15.5๊ฐ€ ๋จ

// ๋งŒ์•ฝ int ํƒ€์ž… ๊ฒฐ๊ณผ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด double ํƒ€์ž…์„ int ํƒ€์ž…์œผ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•˜์—ฌ ์—ฐ์‚ฐ
double result2 = intValue + (int)doubleValue; // doubleValue๊ฐ€ ๊ฐ•์ œ๋กœ int๋กœ ๋ณ€ํ™˜๋˜์–ด 10 + 5๊ฐ€ ๋˜์–ด ๊ฒฐ๊ณผ๋Š” 15๊ฐ€ ๋จ
public class OperationPromotionExample {

	public static void main(String[] args) {
		byte result1 = 10 + 20; // ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์—ฐ์‚ฐ
		System.out.println("result1: " + result1);
		
		byte v1 = 10;
		byte v2 = 20;
		int result2 = v1 + v2; // int ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์—ฐ์‚ฐ
		System.out.println("result2 : " + result2);
		
		byte v3 = 10;
		int v4 = 100;
		long v5 = 1000L;
		long result3 = v3 + v4 + v5; // long ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์—ฐ์‚ฐ
		System.out.println("result3: " + result3);
		
		char v6 = 'A';
		char v7 = 1;
		int result4 = v6 + v7; // int ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์—ฐ์‚ฐ
		System.out.println("result4: " + result4);
		
		int v8 = 10;
		int result5 = v8 / 4; // ์ •์ˆ˜ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” ์ •์ˆ˜
		System.out.println("result5: " + result5);
		
		int v9 = 10;
		double result6 = v9 / 4.0; // double ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์—ฐ์‚ฐ
		System.out.println("result6: " + result6);
		
		int v10 = 1;
		int v11 = 2;
		double result7 = (double) v10 / v11; // double ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์—ฐ์‚ฐ
		System.out.println("result7: " + result7);
	}

}


์ž๋ฐ”์—์„œ + ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1. ํ”ผ ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ์ˆซ์ž์ผ ๊ฒฝ์šฐ์—๋Š” ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

2. ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ์—๋Š” ๋‚˜๋จธ์ง€ ํ”ผ์—ฐ์‚ฐ์ž๋„ ๋ฌธ์ž์—ด๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜์–ด ๋ฌธ์ž๋กœ ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์—ฐ์‚ฐ์‹์—์„œ + ์—ฐ์‚ฐ์ž๊ฐ€ ์—ฐ์ด์–ด ๋‚˜์˜ค๋ฉด ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ˆ˜ํ–‰๋œ ์—ฐ์‚ฐ์‹์ด ๋ง์…ˆ์ด๋ผ๋ฉด ๋ง์…ˆ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ทธ๋‹ค์Œ + ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋งŒ์•ฝ ๋จผ์ € ์ˆ˜ํ–‰๋œ ์—ฐ์‚ฐ์ด ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ์ด๋ผ๋ฉด ์ดํ›„ + ์—ฐ์‚ฐ์€ ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ด ๋ฉ๋‹ˆ๋‹ค.
์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ + ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ๋ถ€๋ถ„์„ ์šฐ์„  ์—ฐ์‚ฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ๋ฉด ๋˜๋ฉฐ, ๊ด„ํ˜ธ๋Š” ํ•ญ์ƒ ์ตœ์šฐ์„ ์œผ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

// ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ์˜ˆ์‹œ
int number = 10;
String text = "Hello";
String result = text + number; // "Hello" + 10์„ ๋ฌธ์ž์—ด๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ "Hello10"์ด ๋œ๋‹ค.

// ์—ฐ์ด์–ด ๋‚˜์˜ค๋Š” + ์—ฐ์‚ฐ์ž์˜ ๋™์ž‘ ์˜ˆ์‹œ
int a = 5;
int b = 3;
int c = 2;
int d = 1;

int calculation = a + b + c + d; // ์ˆœ์ฐจ์ ์œผ๋กœ ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋Š” 11์ด ๋œ๋‹ค.

// ํŠน์ • ๋ถ€๋ถ„์„ ์šฐ์„  ์—ฐ์‚ฐํ•˜๋Š” ์˜ˆ์‹œ
int x = 2;
int y = 3;
int z = 4;

int priorityCalculation = (x + y) * z; // x + y๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•œ ํ›„ z์™€ ๊ณฑ์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋Š” 20์ด ๋œ๋‹ค.


public class StringConcatExample {

	public static void main(String[] args) {
		// ์ˆซ์ž ์—ฐ์‚ฐ
		int result1 = 10 + 2 + 8;
		System.out.println("result1: " + result1);
		
		// ๊ฒฐํ•ฉ ์—ฐ์‚ฐ
		String result2 = 10 + 2 + "8";
		System.out.println("result2: " + result2);
		
		String result3 = 10 + "2" + 8;
		System.out.println("result3: " + result3);
		
		String result4 = "10" + 2 + 8;
		System.out.println("result4: " + result4);
		
		String result5 = "10" + (2 + 8);
		System.out.println("result5: " + result5);
	}
	
}

4. ๋ฌธ์ž์—ด์„ ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๐Ÿ“–

ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฌธ์ž์—ด์„ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด '22'์™€ '1.8'์„ ์ •์ˆ˜ ๋ฐ ์‹ค์ˆ˜ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ˆซ์ž ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ ๋ฌธ์ž์—ด์„ ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ํƒ€์ž… ์˜ˆ์‹œ
String -> byte String str = "10";
byte value = Byte.parseByte(str);
String -> short String str = "100";
short value = Short.parseShort(str);
String -> int String str = "1000";
int value = Integer.parseInt(str)
String -> long String str = "10000";
long value = Long.parseLong(str);
String -> float String str = "3.14";
float value = Float.parseFloat(str);
String -> double String str = "3.14";
double value = Double.parseDouble(str);
String -> boolean String str = "true";
boolean value = Boolean.parseBoolean(str);


๋ฐ˜๋Œ€๋กœ ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
String.valueOf() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ String str = String.valueOf(๊ธฐ๋ณธํƒ€์ž…๊ฐ’); ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•ด ์ค๋‹ˆ๋‹ค.

// ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
int intValue = 10;
String str = String.valueOf(intValue);
public class PrimitiveAndstringConversionExample {

    public static void main(String[] args) {
        // ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜
        int value1 = Integer.parseInt("10");
        int value0 = Integer.parseInt("20");
        
        // ๋ฌธ์ž์—ด์„ ์‹ค์ˆ˜๋กœ ๋ณ€ํ™˜
        double value2 = Double.parseDouble("3.14");
        
        // ๋ฌธ์ž์—ด์„ boolean์œผ๋กœ ๋ณ€ํ™˜
        boolean value3 = Boolean.parseBoolean("true");
        
        System.out.println("value1: " + value1);
        System.out.println("value2: " + value2);
        System.out.println("value3: " + value3);
        
        // ๊ธฐ๋ณธ ํƒ€์ž… ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
        String str1 = String.valueOf(10);
        String str2 = String.valueOf(3.14);
        String str3 = String.valueOf(true);

        System.out.println("str1: " + str1);
        System.out.println("str2: " + str2);
        System.out.println("str3: " + str3);
    }

}

5. ํ•ต์‹ฌ ๋‚ด์šฉ๐Ÿ‘€

์ž๋ฐ” ์ž๋™ ํ˜• ๋ณ€ํ™˜
์ž๋ฐ” ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜
์ž๋ฐ” ์—ฐ์‚ฐ์‹ ํ˜• ๋ณ€ํ™˜
์ž๋ฐ” ๋ฌธ์ž์—ด ๊ธฐ๋ณธํƒ€์ž… ๋ณ€ํ™˜

728x90
๋ฐ˜์‘ํ˜•