โ Java * ์ฌ์น์ฐ์ฐ์์ Casting์ ๋ํด ์์๋ณด์!
Java์๋ ์๋ง์ ์ฐ์ฐ์๊ฐ ์๊ณ ๊ฐ ์ฐ์ฐ์๋ค์ ๋๊ฐ ๋จผ์ ์คํ๋ ์ง์ ๋ํ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
- ์ฐ์ฐ์์ ๋ฐ๋์ ํ๋์ ๊ฐ์ ์ฐ์ถํ๋ค.
- ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ๊ฐ์ผ๋ฉด, ์ฐ์ฐ ๋ฐฉํฅ์ ๋ฐ๋ผ ์ฐ์ฐ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ฐ๋ฐฉํฅ์ ์ข์์ ์ฐ๋ก(→) ํ๋ฌ๊ฐ์ผ๋ก ์๋ ํ์์ ํ๋ฆฟํ ์ฐ์ฐ ๋ฐฉํฅ์ ๋ค ์ข์์ ์ฐ๋ก ํ๋ฌ๊ฐ๋ ๊ฒ์ ๋ํ๋ธ๋ค.
๐คฏ ๋ง๋ค!
์~ ์ด๋ฐ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋๊ตฌ๋! ๋ง ๊ธฐ์ตํ๋ฉด์, ์ค๋์ ์ฌ์น์ฐ์ฐ์๋ฅผ ๊ฐ์ง๊ณ Casting์ ๋ํด ์์๋ณด์.
1. ์ผ๋จ ์ฌ์น์ฐ์ฐ์
์ฌ์ค ๋ณ๊ฑฐ ์๋ค. ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์ฌ์น์ฐ์ฐ์ ํ ๊ฐ์ง๊ฐ ์ถ๊ฐ๋์๊ณ , ์ฃผ์ ํด์ผ ํ ์ฐ์ฐ์ด 2๊ฐ์ง ์๋ค๋ ์ ๋?
์ฌ์น ์ฐ์ฐ์๋ค๋ผ๋ฆฌ๋ ์ ์ฐ์ ์์ ๊ท์น์ ๋ฐ๋ผ +, - ๋ณด๋ค *, /, %๊ฐ ์ฐ์ ์ ์ผ๋ก ๊ณ์ฐ๋๋ค!
์ด๋ป๊ฒ ์๊ฒผ๋ ๊ณ ? | ์ด๋ป๊ฒ ์ฐ๋ ๊ณ ? | ๋ญ ํ๋ ๊ณ ? | ํน์ด ์ฌํญ์ ? |
+ | a + b | ๋ง์ , ์(a)์์ ๋ค(b)๋ฅผ ๋ํ๋ค. | |
- | a - b | ๋บ์ , ์(a)์์ ๋ค(b)๋ฅผ ๋บ๋ค. | |
* | a * b | ๊ณฑ์ , ์(a)์์ ๋ค(b)๋ฅผ ๊ณฑํ๋ค. | |
/ | a / b | ๋๋์ , ์(a)์ ๋ค(b)๋ก ๋๋๋ค. | ์ฐ์ฐ ๊ฒฐ๊ณผ์ ๋ชซ.๋ง์ ๊ตฌํ๋ค! ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ ์์ผ ๊ฒฝ์ฐ ์ถ๋ ฅ๋ ์ ์ํ์์ผ๋ก ์ ์๋ถ ๋ชซ๋ง ์ถ๋ ฅ๋๋ค. |
% | a % b | mod์ฐ์ฐ, ์(a)์ (b)๋ก ๋๋๋ค. | ์ฐ์ฐ ๊ฒฐ๊ณผ์ ๋.๋จธ.์ง.๋ง์ ๊ตฌํ๋ค! |
๋ชซ๋ง์? ๋๋จธ์ง๋ง์? ๋ญ์๋ฆฌ์ผ? ์ถ๋ค๋ฉด ์๋ ์์ ์ฝ๋๋ฅผ ๋๋ ค๋ณด์!
public class Test {
public static void main(String[] args) {
System.out.println(17 + 5);
System.out.println(17 - 5);
System.out.println(17 * 5);
System.out.println(17 / 5);
System.out.println(17 % 5);
}
}
2. Casting (ํ๋ณํ) ์ด๋?
๋ฐ์ดํฐ์ ์๋ฃํ์ ๋ค๋ฅธ ์๋ฃํ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ํ๋ณํ(Casting)์ด๋ผ๊ณ ํ๋ค!
์๋ฃํ์ ํฌ๊ธฐ๊ฐ ์์ ๊ฒ์ ํฌ๊ธฐ๊ฐ ํฐ ์ชฝ์ผ๋ก ๋ณํ์ ๊ฐ๋ฅํ๋, ํฌ๊ธฐ๊ฐ ํฐ ํ์ ์ ์์ ํ์ ์ผ๋ก ๋ณํ์ ๋๋ถ๋ถ ๋ถ๊ฐ๋ฅํ๋ค!
( ๋ช ๊ฐ์ง์ ๊ฒฝ์ฐ ๊ฐ๋ฅํ๋ค. )
์ฃผ๋ก ๋ฐ์ดํฐ ํ์ (์๋ฃํ)์ด ๋ค๋ฅธ ๊ฐ๋ค์ ๊ณ์ฐํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ฉฐ, ํ์ ์ด ๋ค๋ฅธ ๊ฐ๋ค์ ๊ฐ์ ํ์ ์ผ๋ก ๋ณํํ ๋ค์์ ๊ณ์ฐํ๋ค!
์ด๋ป๊ฒ ์ํค๋?
1. ๋ณดํต์ ์๋ก ๋ค๋ฅธ ๋ ์๋ฃํ์ด ์ฐ์ฐ ๋ ๋ ์๋ฃํ์ ํฌ๊ธฐ๊ฐ ํฐ ์ชฝ์ผ๋ก ์๋ casting ๋๋ค!
public class Test {
public static void main(String[] args) {
int intNum = 17;
double douNum = 5.0;
String string = "string text";
double sum1 = intNum + douNum;
// int sum = intNum + douNum;
/*
>> Type mismatch: cannot convert from double to int
>> doubleํ์ int๋ก convert(์ ํ)ํ ์ ์๋ค.
int์ double์ ์ฐ์ฐํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ ๊ฐ์ด double ํํ์
๋๋ค.
๋ฐ๋ผ์, ์ฃผ์์ ํด์ฒด ํ๋ฉด ์๋ฌ๊ฐ ๋จ๋ ๊ฑธ ํ์ธ ํ ์ ์์ต๋๋ค.
*/
System.out.println(intNum + douNum);
String sum2 = intNum + string;
// int sum2 = intNum + string;
/*
>> Type mismatch: cannot convert from String to int
>> Stringํ์ int๋ก convert(์ ํ)ํ ์ ์๋ค.
int์ string์ ์ฐ์ฐํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ ๊ฐ์ด String ํํ์
๋๋ค.
๋ฐ๋ผ์, ์ฃผ์์ ํด์ฒด ํ๋ฉด ์๋ฌ๊ฐ ๋จ๋ ๊ฑธ ํ์ธ ํ ์ ์์ต๋๋ค.
doubleํ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฉฐ, ๊ถ๊ธํ์๋ฉด ์ง!์ !์ค!์ฒ!
*/
System.out.println(douNum + string);
/*
์ ์ฝ๋๋ ๋์ผ๋ก ๋ณด์ด๋ ์ฐจ์ด๋ ์์ผ๋ ์ค์ ๋ก๋ 5.0๊ณผ string text๊ฐ ์ถ๋ ฅ ๋ ๊ฒ์ด ์๋,
5.0string text ๋ผ๋ String ํํ์ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ ๋ ๊ฒ์
๋๋ค.
*/
}
}
2. ( ) ๊ดํธ์์ ์๋ฃํ์ ๋ช ๋ช ํด์ค๋ค.
์ผ๋จ, ์๋ฃํ ํฌ๊ธฐ๊ฐ ์์ ๊ฐ ๋ถํฐ ํฌ๊ฒ ๋ง๋ค์ด๋ณด์
public class Test {
public static void main(String[] args) {
int intNum = 17;
double douNum = 5.7;
String string = "string text";
System.out.println((double)intNum);
//System.out.println((String)intNum);
/*
์ด์ ์๋ฃํ์์ ์ค๋ช
ํ๋ฏ์ด String์ ๊ธฐ๋ณธ์๋ฃํ์ด ์๋ ์ฐธ์กฐ ์๋ฃํ์ด๋ค.
๋ฐ๋ผ์, String์ผ๋ก castingํ ๋๋ () ์์ ๋ช
๋ช
ํ์ง ์๊ณ , ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋
์์ printํ ๋ ์ฒ๋ผ ์ฐ์ฐ์ ํด์ค๋ค.
์ ์ฝ๋๋ฅผ ์คํ์ํค๋ ค๊ณ ํ๋ฉด ๊ธฐ๊ณ๊ฐ ์ด๋ฆฌ๋ฅ์ ํดํ๋ค.
*/
String x = "" + intNum;
/*
์๋ฃํ.valueOf(๊ฐ) : ์
๋ ฅ๋ ๊ฐ์ ํด๋น ์๋ฃํ์ผ๋ก ๋ณํํด์ฃผ๋ ๋ฉ์๋.
์ ์์๋ฅผ print๋ฌธ์ ์ฐ์ง ์์ ์ด์ ๋?
์ง๊ธ ์ค๋ช
ํ๊ธฐ์ ๋จธ๋ฆฌ๊ฐ ํฐ์ง์ง๋ ๋ชจ๋ฅด๋ ๋์ค์ ๋ค ๊นจ๋ซ๊ฒ ๋๋ค.
๊ทธ๋๋ ๊ถ๊ธํ๋ค, ์ง๊ธ ์๊ณ ์ถ๋ค! ๋ธ๋ก๊ทธ์ ์๋ ์นด์นด์คํก์ผ๋ก ๋ฉ์ ์ ๋ณด๋ด์.
*/
String y = String.valueOf(intNum);
String z = String.valueOf(douNum);
/*
์๋ฃํ.valueOf(๊ฐ) : ์
๋ ฅ๋ ๊ฐ์ ํด๋น ์๋ฃํ์ผ๋ก ๋ณํํด์ฃผ๋ ๋ฉ์๋.
*/
}
}
์๋ฃํ ํฌ๊ธฐ๊ฐ ํฐ ๊ฐ์ ์๊ฒ ๋ง๋ค์ด ๋ณด์. ๋จผ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๋ถํฐ!
public class Test {
public static void main(String[] args) {
double douNum = 5.7;
String intString = "17";
String douString = "10.9";
System.out.println((int)douNum);
/*
์ค์์์ ์ ์๋ก ๋ณํํ๋ ๊ฒฝ์ฐ ๋๋จธ์ง๊ฐ ๋ฒ๋ฆผ๋๊ณ ๋ชซ๋ง ๊ฐ์ ธ์จ๋ค!
์ฌ์ค ๊ทธ ์ด์ ํํ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฐํ ๋ฒ๋ ค๋ฒ๋ฆฌ๋ ๊ฒ. cut cut cut!
*/
// int x = (int) intString;
/*
์ด์ ์๋ฃํ์์ ์ค๋ช
ํ๋ฏ์ด String์ ๊ธฐ๋ณธ์๋ฃํ์ด ์๋ ์ฐธ์กฐ ์๋ฃํ์ด๋ค.
๋ฐ๋ผ์ castingํ ๋ () ์์ ๋ช
๋ช
ํ์ง ์๊ณ , ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
์ ์ฝ๋๋ฅผ ์คํ์ํค๋ ค๊ณ ํ๋ฉด err๋ฅผ ๋ณผ ์ ์๋ค.
*/
int x = Integer.valueOf(intString);
double y = Double.valueOf(douString);
/*
์๋ฃํ.valueOf(๊ฐ) : ์
๋ ฅ๋ ๊ฐ์ ํด๋น ์๋ฃํ์ผ๋ก ๋ณํํด์ฃผ๋ ๋ฉ์๋.
*/
System.out.printf("%d, %f \n", x, y);
}
}
โญ valueOf() ๋ฉ์๋๋ฅผ ์ค๋ช ํ ๋ ์ดํดํ๊ธฐ ์ฌ์ฐ๋ผ๊ณ ์๋ฃํ.valueOf(๊ฐ)์ด๋ผ๊ณ ํ์ง๋ง,
์ค์ ๋ก๋ ์์ ์๋ฃํ์์ ๋งํ๋ ๋ํผ ํด๋์ค(Wrapper Class)์ valueOf() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค!
๋ํผํด๋์ค.valueOf(๊ฐ)
๊ฐ ์๋ฃํ์ ๋์๋์ Wrapper Class ๋ชฉ๋ก์ ์๋ฃํ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์.
โ 2021/01/22 - [SW/โ Java] - โ Java * ์๋ฃํ์ ์์๋ณด์
โญ ๋ํผํด๋์ค.toString(๊ฐ) ์ ์ด์ฉํด์ int๋ double ๋ฑ๋ฑ์ ์๋ฃํ์ String์ผ๋ก casting ํ ์๋ ์๋ค.
์ค์ต์.. ์ ํ๋ก.. sry ๐ญ...
๊ทธ๋ผ ์ด์ ๋ง๋ ์๋๋ ์น๊ตฌ๋ค์ ์ข ์ดํด๋ณด์? ์๋ ์คํ ์์ ์ฃผ์๋ฌธ์ ๋ณด๊ณ ๊ทธ๋๋ก ํด๋ณด์!
public class Test {
public static void main(String[] args) {
/*
์คํ ์์
์ฒซ๋ฒ์งธ. 10, 11ํ ์ฃผ์์ ํด์ ํ๊ณ ์คํํ๋ค.
๋๋ฒ์งธ. 10, 11ํ์ ์ฃผ์์ํค๊ณ 34, 35ํ์ ์ฃผ์ ํด์ ํ๊ณ ์คํํ๋ค.
*/
String intString2 = "9223372036854775800";
// int y2 = Integer.valueOf(intString2);
// System.out.println(y2);
/*
์ปดํ์ผ์ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ ์ง๋ง ์คํ ์ ์ค๋ฅ๊ฐ ์๊ธด๋ค.
>> Exception in thread "main" java.lang.NumberFormatException: For input string: "9223372036854775807"
>> ๋ฒํธํฌ๋ฉง์์ธ: ์
๋ ฅ๋ฌธ์์ด "9223372036854775807"
์ ํด์ฃผ๋ค๊ฐ ์์ด๋ฌ๋! ๋ค๋ฅธ string ๋ฃ์์ ๋๋ ๊ด์ฐฎ๋ค๊ฐ ์์ด๋ฌ๋!
int๋ก ํํ ํ ์ ์๋ ์ซ์๋ฒ์(-2147483648 ~ 2147483647)๋ฅผ ๋์ด์ ๊ทธ๋ ๋ค.
int๋ณด๋ค ๋ ๋์ ์๋ฃํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ ์ ์ ์๋ฃํ long์ ์ฐ๋ฉด ์๋ฌ๊ฐ ํด๊ฒฐ๋๋ค.
*/
long y3 = Long.valueOf(intString2);
System.out.println(y3);
/*
Long ํํ ๋ฒ์(-9223372036854775808 ~ 9223372036854775807)๋ฅผ ๋์ด๊ฐ๋ฉด ์ด๋ป๊ฒ ๋๋?
์๋ฌ๋๋ค.
*/
String string = "string text";
// int z = Integer.valueOf(string);
// System.out.println(z);
/*
์ปดํ์ผ์ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ ์ง๋ง ์คํ ์ ์ค๋ฅ๊ฐ ์๊ธด๋ค.
>> Exception in thread "main" java.lang.NumberFormatException: For input string: "string text"
>> ๋ฒํธํฌ๋ฉง์์ธ: ์
๋ ฅ๋ฌธ์์ด "string text"
์ ํด์ฃผ๋ค๊ฐ ์์ด๋ฌ๋! ๋ค๋ฅธ string ๋ฃ์์ ๋๋ ๊ด์ฐฎ๋ค๊ฐ ์์ด๋ฌ๋!
ํ ์ ์๊ฒ ์ง๋ง, ์ ๊ฑด ๋๊ฐ๋ด๋ ์๋์ง์๋!
์์ ์๊ฒผ๋ ๋ฌธ์ ์ฒ๋ผ ๋ณํ ํ ์ ์๋ ๋ฒ์์ ์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค!
๋๋ฅต,, T^T ์ข ๋ ์์ธํ ์ค๋ช
์ ์ธํฐ๋ท์ ์ฐธ๊ณ ํ์... (์ฌ๊ธฐ๊น์ง๊ฐ.. ํ..)
*/
}
}
๋ค ๋ฐฐ์ ์ผ๋ ๋ฌธ์ ์ข ํ์ด๋ณด์ !
๊ตฌ๊ธ ํผ ์จ๋ณด๊ณ ์ถ์ด์ ํ๋ด..
Thanks for ๐
- Kephi Javatory : 4. Java ์๋ฐ - ์ฐ์ฐ์ ์ข ๋ฅ, ์ฐ์ฐ์ ์ฐ์ ์์
- ์๋๋ท ํฐ ํด๋ฆฌ์ด - ๊ณฑ์ ๊ณผ ๋๋์
- ์ผ๋ฐ์ ์ฑ์ฅ ๋ธ๋ก๊ทธ - Java ํ๋ณํ(casting)์ด๋
- ์ฝ๋ฉํฉํ ๋ฆฌ - [Java] ํ๋ณํ Casting(๋ฌธ์ํ,์ ์ํ,์ค์ํ)