๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JAVA/๊ธฐ๋ณธ ์ด๋ก 

10. Casting (ํ˜•๋ณ€ํ™˜)

by ๐Ÿณ Laboon 2024. 7. 14.
Casting ์ด๋ž€?

 

์ž๋ฃŒํ˜•์—์„œ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ Casting(ํ˜•๋ณ€ํ™˜)์ด๋ผ๊ณ  ํ•œ๋‹ค.

3. ์ž๋ฃŒํ˜• ํฌ์ŠคํŠธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฐ ์ž๋ฃŒํ˜•์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ, ์ž๋ฃŒํ˜• ํฌ๊ธฐ ๋งŒํผ ๊ณต๊ฐ„์„ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณต๊ฐ„์— ๊ฐ’์„ ๋„ฃ์Œ์œผ๋กœ์จ ํ• ๋‹น์ด ๋˜๋Š”๋ฐ Casting๋„ ๊ฐ™์€ ์›๋ฆฌ์ด๋‹ค.

 

long a - [size = 8], int b - [size = 4] ์ด๋ฏธ a์™€ b๋ฅผ ์„ ์–ธํ•˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์ € ๊ณต๊ฐ„์ด ํ• ๋‹น์ด ๋œ๋‹ค.

์ด ๋•Œ, b์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ a์— ๋„ฃ์–ด๋ดค์ž 8๊ฐœ์˜ size ์ค‘ 4๊ฐœ์˜ size๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

์ด๋Ÿฐ ์›๋ฆฌ ๋•Œ๋ฌธ์— Casting์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ž‘์€ Data type ์—์„œ ํฐ Data type๋งŒ?

 

์œ„ ์˜ˆ์‹œ๋งŒ ๋ณด๋ฉด ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘์€ ์ž๋ฃŒํ˜•์—์„œ ๋” ํฐ ์ž๋ฃŒํ˜•์œผ๋กœ ๋Œ€์ž…ํ•  ๋•Œ๋งŒ Casting์ด ๋˜๋Š” ๊ฒƒ์ด๋ƒ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ €๊ฒƒ์€ ๋‹น์—ฐํ•œ ๊ณผ์ •์ด๋ผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค๊ณ  ํ•ด์„œ ์ž๋™ ํ˜•๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•˜๊ณ  ๋ฌต์‹œ์  ํ˜•๋ณ€ํ™˜์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์˜์–ด๋กœ๋Š” UpCasting ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋” ์ปค์กŒ์œผ๋ฏ€๋กœ

 

ํ•˜์ง€๋งŒ, ํฐ Data Type์—์„œ๋„ ์ž‘์€ Data Type์œผ๋กœ ํ˜•๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ DownCasting ์ด๋ผ๊ณ  ํ•˜๊ณ  ๊ฐ•์ œ ํ˜•๋ณ€ํ™˜, ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ”๊พผ๋‹ค๊ณ  ๋ช…์‹œํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

long a = Integer.MAX_VALUE;
int b = (int) a;

 

์ฝ”๋“œ์™€ ๊ฐ™์ด ์–ด๋–ค ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ”๊ฟ€ ๊ฒƒ์ธ์ง€ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋งŒ ์ž‘์€ Data Type์˜ ๊ฒฝ์šฐ, ํ•œ๊ณ„๊ฐ’์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ OverFlow๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. OverFlow๋Š” ์ž‘์€ DataType์˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ ์ดˆ๊ณผ๋œ ๊ฐ’๊นŒ์ง€ ์ฑ„์›Œ์ง€๋Š”๋ฐ ์ด ๊ณผ์ •์„ ์ƒ๊ฐ ์กฐ์ฐจ๋„ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

 

๊ทธ๋ƒฅ OverFlow ์ž์ฒด๊ฐ€ ๋ฌธ์ œ์ด๋ฏ€๋กœ ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜์„ ํ•  ๋•Œ๋Š” ์ œํ•œ์„ ํ™•์‹คํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋‘์ž.