2021. 2. 5. 08:00ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java
๐ ํ ๋ณํ(Type Conversion)
ํ ๋ณํ(Type Conversion)์ด๋ Data Type์ ๋ณ๊ฒฝํ๋ ๊ฒ ์ ๋๋ค. ์๋ ์์๋ int (์ ์) Type 200์ 32bit ๊ฐ์ ๋๋ค.
00000000 00000000 00000000 11001000
์ปดํจํฐ๋ ์ด์ง์์ ์ธ๊ณ ์ ๋๋ค. ์ค์ ๋ก๋ 0๊ณผ 1๋ ์๋๊ณ , On๊ณผ Off๋ก ์ด๋ฃจ์ด์ ธ ์์ง๋ง, ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฝ๊ฒ 2์ง์๋ก ํํํ๋ค๊ณ ์ดํด ํ์๋ฉด ๋ฉ๋๋ค. ์์ ์ซ์๋ฅผ ๋ณด์๋ฉด 8๊ฐ์ฉ 4์๋ฆฌ๋ก ์ด๋ฃจ์ด์ง ์๋ฆฟ์๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค. ์ด๊ฒ์ 4*8 = 32bit์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์์ Data๋ int ํ์ผ๋ก ์ซ์ 200์ ์ ์ฅํ์ ๋, Memory ์์ ์ ์ฅ๋๋ ๋ด์ฉ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ค์(Float) Type์ผ๋ก ์ ์ 200.0์ ์ ์ฅํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ฐ๋ฆฌ ์ฌ๋์๊ฒ๋ ๋ ๋ค ๋๊ฐ์ ๊ฐ์ด์ง๋ง,
์ปดํจํฐ์๊ฒ๋ ์์ ํ ๋ค๋ฅธ ์๊ฐ ๋์ด ๋ฒ๋ฆฝ๋๋ค.
Float Type 200.0์ ์๋์ ๊ฐ์ต๋๋ค.
01000011 01001000 00000000 00000000
๐ ์๋ ํ ๋ณํ
๐ float์์ double๋ก ํ ๋ณํ.
double a = 3.0f;
์์ ์ฝ๋๋ Double Type์ ๋ณ์ a์ Float Type์ ๊ฐ์ ๋์ ํ๊ณ ์์ต๋๋ค. 3.0 ๋ค์ f๊ฐ ๋ถ์ ๊ฒ์ Float Type์ด๋ผ๋ ๊ฒ์ ๋๋ค.
Double์ 64bit์ ์ค์๋ฅผ ๋ด์ ์ ์๋ Data Type์ด๋ฉฐ, float๋ 32bit์ ์ค์๋ฅผ ๋ด์ ์ ์๋ Data Type์ ๋๋ค.
์์ ๊ทธ๋ฆ์ ๋ด๊ฒจ ์๋ ๊ฐ์ ํฐ ๊ทธ๋ฆ์ ์ฎ๊ฒจ ๋ด์ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๐ double์์ float๋ก ํ ๋ณํ.
float a = 3.0;
์์ ์ฝ๋๋ Float Type์ ๋ณ์ a์ Doule Type ๊ฐ 3.0์ ๋ฃ๊ฒ ๋ค๋ ์๋ฏธ ์ ๋๋ค.
์ฆ, ์์์ ๋ค์ f๊ฐ ์๋ค๋ ๊ฒ์ Double Type์ด๋ผ๋ ๊ฒ ์ ๋๋ค.
์์์๋ ์ด์ผ๊ธฐ ํ๋ฏ์ด Float๋ Double๋ณด๋ค ์์ ๊ทธ๋ฆ์ ๋๋ค. ๋๋ฌธ์ ์์ ๊ฐ์ด ํ์ ๋๋ ์ค๋ฅ๊ฐ ๋๋ฉฐ ์งํ๋์ง ์์ต๋๋ค.
๐ ํ ๋ณํ ๊ท์น
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด Byte Type์ Short Type์ผ๋ก ๋ณํํ ์ ์์ผ๋, Short Type์ Byte Type์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
๋ํ, Long์ Float์ผ๋ก ๋ณํํ ์ ์์ง๋ง, Float๋ Long์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์์์ ์์๋ฅผ ์ฐ์ฐํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
int a = 3;
float b = 1.0f;
double c = a + b;
์์ ์ฐ์ฐ์ ๋ ๋ฒ์ ํ ๋ณํ์ด ์ผ์ด๋๊ณ ์์ต๋๋ค. ๋จผ์ , a์ b๋ฅผ ๋ํ๊ธฐ ์ํด ์ ์ a์ ์ค์ b ์ค ํ๋๊ฐ ํ ๋ณํ์ด ๋์ด์ผ๋ง ํฉ๋๋ค.
์์ ๊ทธ๋ฆผ์์ ๋ง์ง๋ง ์ฐ์ฐ ํ์ ๋ณด๋ฉด int์ float๊ฐ ๋ง๋๊ฒ ๋๋๋ฐ (a๋ int, b๋ float) int๊ฐ float๊ฐ ๋๊ธฐ ๋๋ฌธ์(์ค์๋๊น ์ ์๋ณด๋ค ๋ง์ ์๋ฅผ ๋ด์ ์ ์๋ ๊ทธ๋ฆ.) ๋ณ์ a์ ๋ด๊ฒจ ์๋ ๊ฐ์ float Type์ผ๋ก ๋ณํ๋๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ Float Type์ด ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ด ๊ฐ๋ค์ด ํฉํด์ ธ ๋ด๊ธธ ๊ทธ๋ฆ์ธ c์ ๋ณ์ Type์ doubleํ ์ ๋๋ค.
float๊ฐ double Type์ ๋ณ์์ ๋ด๊ธฐ๊ธฐ ์ํด float๋ double๋ก ํ ๋ณํ์ด ๋์ด์ผ ํฉ๋๋ค.
double์ 64bit ์์๋ฅผ ๋ด์ ์ ์๊ณ , float๋ 32bit ์์๋ฅผ ๋ด์ ์ ์๊ธฐ ๋๋ฌธ์ double๋ก ํ ๋ณํ์ด ์ด๋ค์ง๊ฒ ๋ฉ๋๋ค.
๐ ๋ช ์์ ํ ๋ณํ
๐ ์๋ ํ ๋ณํ์ด ์ด๋ค์ง์ง ์์ ๊ฒฝ์ฐ
float a = 100.0;
int b = 100.f;
์๋์ผ๋ก ํ ๋ณํ์ด ๋์ง ์์ ๋๊ฐ ์์ต๋๋ค.
์ด๋ด ๋ ์๋์ผ๋ก ํ ๋ณํ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ช ์์ (Explicit Conversion)์ด๋ผ๊ณ ํฉ๋๋ค.
์์ ์์ค ์ฝ๋๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์๋ํ๋ฉด?! ์๋ ํ ๋ณํ์ด ์ด๋ค์ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
float a = (float)100.0;
int b = (int)100.0f;
์ ๊ทธ๋ผ ์ด๋ ๊ฒ ํ๋ฒ ์์ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์์ ๊ดํธ๋ฅผ ๋ถ์ด๊ณ , ๋ณ๊ฒฝํ Data Type์ ๋ช ์ํ๋ฉด ์ด๊ฒ์ด ๋ฐ๋ก ๋ช ์์ ํ ๋ณํ์ ํด์ฃผ๋ ๊ฒ ์ ๋๋ค.
์ฃผ๋ํ๋์ ์ด๋ฒ ํฌ์คํ ์ด ์ด๋ ์ จ๋์? ๊ตฌ๋ , ๊ณต๊ฐ๊ณผ ๋๊ธ์ ์ฃผ๋ํ๋์๊ฒ ๋งค์ฐ ํฐ ํ์ด ๋ ๊ฒ์ ๋๋ค!
'๊ฐ๋ ์ ๋ฆฌ ์์ ์ค > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๋ฐ๋ณต๋ฌธ (0) | 2021.02.07 |
---|---|
[JAVA] ์กฐ๊ฑด๋ฌธ (0) | 2021.02.06 |
[JAVA] ์ฐ์ฐ์(Operator) (0) | 2021.02.04 |
[JAVA] ๋ณ์(Variable)์ ์ ์น/ํ์น ์ฐ์ฐ (0) | 2021.02.03 |
[JAVA] ์ ๊ทผ ์ ํ์(Access Modifier) (0) | 2021.02.02 |