์๋
! CodeGym์ ์งํํ๋ฉด์ ํ๋ฆฌ๋ฏธํฐ๋ธ ์ ํ์ ์ฌ๋ฌ ๋ฒ ์ ํ์ต๋๋ค. ๋ค์์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ค์ ๋ํด ์๊ณ ์๋ ์งง์ ๋ชฉ๋ก์
๋๋ค.
- ๊ทธ๊ฒ๋ค์ ๊ฐ์ฒด๊ฐ ์๋๋ฉฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ ๋ํ๋
๋๋ค.
- ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ์์ต๋๋ค
- ์ ์: byte , short , int , long
- ๋ถ๋ ์์์ (์์) ์ซ์: float ๋ฐ double
- ๋
ผ๋ฆฌ๊ฐ: ๋ถ์ธ
- ๊ธฐํธ ๊ฐ(๋ฌธ์ ๋ฐ ์ซ์ ํ์์ฉ): char
-
๊ฐ ์ ํ์๋ ๊ณ ์ ํ ๊ฐ ๋ฒ์๊ฐ ์์ต๋๋ค.
์์ ์ ํ |
๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ |
๊ฐ ๋ฒ์ |
๋ฐ์ดํธ |
8๋นํธ |
-128 ~ 127 |
์งง์ |
16๋นํธ |
-32768 ~ 32767 |
์ฏ |
16๋นํธ |
0 ~ 65536 |
์ ์ |
32๋นํธ |
-2147483648 ~ 2147483647 |
๊ธด |
64๋นํธ |
-9223372036854775808 ~ 9223372036854775807 |
๋จ๋ค |
32๋นํธ |
(2์ -149์น) ~ ((2 - (2์ -23์น)) * 2์ 127์น) |
๋๋ธ |
64๋นํธ |
(-2์ 63์น) ~ ((2์ 63์น) - 1) |
๋ถ์ธ |
8(๋ฐฐ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ), 32(๋ฐฐ์ด์์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ) |
์ฐธ ๋๋ ๊ฑฐ์ง |
๊ทธ๋ฌ๋ ๊ฐ์ด ๋ค๋ฅผ ๋ฟ๋ง ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐจ์งํ๋ ๊ณต๊ฐ๋ ๋ค๋ฆ
๋๋ค. int
๋ 1๋ฐ์ดํธ ์ด์์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ
๋กฑ์ ์๋ณด๋ค ํฝ๋๋ค. ํ๋ฆฌ๋ฏธํฐ๋ธ๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฌ์์ ์ค์ฒฉ ์ธํ๊ณผ ๋น๊ตํ ์ ์์ต๋๋ค.
![๊ธฐ๋ณธ ์ ํ์ ํ๋ ๋ฐ ์ถ์ - 2]()
๊ฐ ์ค์ฒฉ ์ธํ์๋ ๋ด๋ถ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ด ์์ต๋๋ค. ์ค์ฒฉ ์ธํ์ด ํด์๋ก ๋ ๋ง์ ๊ณต๊ฐ์ด ์์ต๋๋ค. ํฐ ์ค์ฒฉ ์ธํ(
long )์ ๋ ์์
int๋ฅผ ์ฝ๊ฒ ์์ฉํ ์ ์์ต๋๋ค . ์ฝ๊ฒ ๋ง๊ณ ๋ค๋ฅธ ์์
์ ์ํํ ํ์๊ฐ ์์ต๋๋ค. Java์์๋ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ก ์์
ํ ๋ ์ด๋ฅผ ์์์ ๋ณํ์ด๋ผ๊ณ ํฉ๋๋ค. ๋๋ ๋ค๋ฅด๊ฒ ํํํ๋ฉด ํ์ฅ์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฐ์์ ํ์ฅ
ํ๋ ๋ณํ์ ๊ฐ๋จํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public class Main {
public static void main(String[] args) {
int bigNumber = 10000000;
byte littleNumber = 16;
bigNumber = littleNumber;
System.out.println(bigNumber);
}
}
์ฌ๊ธฐ์๋ int ๋ณ์ ์ ๋ฐ์ดํธ ๊ฐ์ ํ ๋นํฉ๋๋ค . ์๋ฌด ๋ฌธ์ ์์ด ํ ๋น์ด ์ฑ๊ณตํฉ๋๋ค. ๋ฐ์ดํธ์ ์ ์ฅ๋ ๊ฐ์
int๊ฐ ์์ฉํ ์ ์๋ ๊ฒ๋ณด๋ค ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํฉ๋๋ค. ์์ ์ค์ฒฉ ์ธํ(๋ฐ์ดํธ ๊ฐ)์ ํฐ ์ค์ฒฉ ์ธํ(
int ๋ณ์) ์์ ์ฝ๊ฒ ๋ค์ด๊ฐ๋๋ค. ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ, ์ฆ ๋ฒ์๊ฐ ํฐ ๋ฐ์ดํฐ ์ ํ์ ์์ฉํ ์ ์๋ ๋ณ์์ ํฐ ๊ฐ์ ์
๋ ฅํ๋ ค๋ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ๋ฌธ์ ์
๋๋ค. ์ค์ ์ค์ฒฉ ์ธํ์ ์ฌ์ฉํ๋ฉด ์ซ์๊ฐ ๋ง์ง ์์ต๋๋ค. Java๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ์ง๋ง ๋์์ค๊ฐ ์์ต๋๋ค.
์งง์ ๋ณ์ ์
int๋ฅผ ๋ฃ์ด ๋ด
์๋ค :
public static void main(String[] args) {
int bigNumber = 10000000;
short littleNumber = 1000;
littleNumber = bigNumber;// Error!
System.out.println(bigNumber);
}
์ค๋ฅ! ์ปดํ์ผ๋ฌ๋ ํฐ ์ค์ฒฉ ์ธํ(
int )์ ์์ ์ธํ(
short ) ์์ ์ง์ด๋ฃ์ด ๋น์ ์์ ์ธ ์์
์ ์๋ํ๊ณ ์์์ ์ดํดํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ปดํ์ผ ์ค๋ฅ๋ ์ปดํ์ผ๋ฌ์ ๊ฒฝ๊ณ
์
๋๋ค . ํ์คํ๋ค๋ฉด ์ปดํ์ผ๋ฌ์๊ฒ
"๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ๋ด๊ฐ ๋ฌด์์ ํ๋์ง ์๊ณ ์์ต๋๋ค!"๋ผ๊ณ ๋งํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ฅผ ๋ช
์์ ํ์ ๋ณํ ๋๋ ์ถ์๋ผ๊ณ ํฉ๋๋ค.
Java์์ ์ขํ๊ธฐ
์ถ์ ๋ณํ์ ์ํํ๋ ค๋ฉด ๊ฐ์ ๋ณํํ๋ ค๋ ์ ํ์ ๋ช
์์ ์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค. ์ฆ, ์ปดํ์ผ๋ฌ์ ์ง๋ฌธ์ ๋ตํด์ผ ํฉ๋๋ค
. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public static void main(String[] args) {
int bigNumber = 10000000;
short littleNumber = 1000;
littleNumber = (short) bigNumber;
System.out.println(littleNumber);
}
์ฐ๋ฆฌ๋ ์งง์ ๋ณ์ ์
int๋ฅผ ๋ฃ๊ณ ์ถ๊ณ ์ฑ
์์ ์ง ๊ฒ์์ ๋ช
์์ ์ผ๋ก ๋ํ๋
๋๋ค. ๋ ์ข์ ์ ํ์ด ๋ช
์์ ์ผ๋ก ํ์๋ ๊ฒ์ ํ์ธํ ์ปดํ์ผ๋ฌ๋ ๋ณํ์ ์ํํฉ๋๋ค. ๊ฒฐ๊ณผ๋ ๋ฌด์์
๋๊น? ์ฝ์ ์ถ๋ ฅ:
-27008 ์ฝ๊ฐ ์์์น ๋ชปํ ๊ฒฐ๊ณผ์์ต๋๋ค. ์ ํํ ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ป์์ต๋๊น? ์ฌ์ค, ๊ทธ๊ฒ์ ๋ชจ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์๋ ๊ทธ ๊ฐ์ 10000000 ์ด์๊ณ 32๋นํธ๋ฅผ ์ฐจ์งํ๋
int ๋ณ์ ์ ์ ์ฅ๋์๋ค . ์ด๊ฒ์ ์ด์ง ํํ์
๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๊ฐ์ 16๋นํธ๋ง ์ ์ฅํ ์ ์๋
์งง์ ๋ณ์์ ์๋๋ค! ๋ฐ๋ผ์ ์ซ์์ ์ฒ์ 16๋นํธ๋ง ์ด๋๋ฉ๋๋ค. ๋๋จธ์ง๋ ํ๊ธฐ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก short ๋ณ์๋ ๋ค์ ๊ฐ์ ๋ฐ์ต๋๋ค.
10์ง์ ํ์์ -27008๊ณผ ๊ฐ์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ๋ ํน์ ์ ํ์ผ๋ก์ ๋ช
์์ ์ถ์ ๋ณํ์ ํ์ํ์ฌ "ํ์ธ"์ ์์ฒญํฉ๋๋ค. ์ฒซ์งธ, ์ด๊ฒ์ ๋น์ ์ด ๊ฒฐ๊ณผ์ ์ฑ
์์ ์ง๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ๋์งธ, ๋ณํ์ด ๋ฐ์ํ ๋ ํ ๋นํ ๊ณต๊ฐ์ ์ปดํ์ผ๋ฌ์ ์๋ ค์ค๋๋ค. ๊ฒฐ๊ตญ ๋ง์ง๋ง ์์์ short๊ฐ ์๋ byte ๋ณ์์ int ๊ฐ์ ํ ๋นํ๋ฉด
16 ๋นํธ๊ฐ ์๋ 8๋นํธ๋ง ๋ง์๋๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ ๋ฌ๋ผ์ง๋๋ค. ์์ ์ ํ(
float ๋ฐ
double )์๋ ๋ณํ์ ์ขํ๋ ์์ฒด ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค. ์ง์ ์ซ์๋ฅผ ์ ์ ์ ํ์ผ๋ก ๋ณํํ๋ ค๊ณ ํ๋ฉด ์์ ๋ถ๋ถ์ด ๋ฒ๋ ค์ง๋๋ค.
public static void main(String[] args) {
double d = 2.7;
long x = (int) d;
System.out.println(x);
}
์ฝ์ ์ถ๋ ฅ:
2
์ฏ
char๊ฐ ๊ฐ๋ณ ๋ฌธ์๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ์์ต๋๋ค .
public static void main(String[] args) {
char c = '!';
char z = 'z';
char i = '8';
}
๊ทธ๋ฌ๋์ด ๋ฐ์ดํฐ ์ ํ์๋ ์ดํดํด์ผ ํ ๋ช ๊ฐ์ง ์ค์ํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๊ฐ ๋ฒ์ ํ๋ฅผ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ ์ ํ |
๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ |
๊ฐ ๋ฒ์ |
๋ฐ์ดํธ |
8๋นํธ |
-128 ~ 127 |
์งง์ |
16๋นํธ |
-32768 ~ 32767 |
์ฏ |
16๋นํธ |
0 ~ 65536 |
์ ์ |
32๋นํธ |
-2147483648 ~ 2147483647 |
๊ธด |
64๋นํธ |
-9223372036854775808 ~ 9223372036854775807 |
๋จ๋ค |
32๋นํธ |
(2์ -149์น) ~ ((2 - (2์ -23์น)) * 2์ 127์น) |
๋๋ธ |
64๋นํธ |
(-2์ 63์น) ~ ((2์ 63์น) - 1) |
๋ถ์ธ |
8(๋ฐฐ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ), 32(๋ฐฐ์ด์์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ) |
์ฐธ ๋๋ ๊ฑฐ์ง |
char ์ ํ ์ ๋ํด 0์์ 65536 ๋ฒ์๊ฐ ํ์๋ฉ๋๋ค . ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ๊ฒฐ๊ตญ
๋ฌธ์๋ ์ซ์๋ง ๋ํ๋ด๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ์, ๋ฌธ์ฅ ๋ถํธ๋ ๋ํ๋
๋๋ค. ์๋ฐ์์๋
๋ฌธ์ ๊ฐ์ด ์ ๋์ฝ๋ ํ์์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ์์
์ค ํ๋์์ ์ด๋ฏธ ์ ๋์ฝ๋๋ฅผ ์ ํ์ต๋๋ค. ์ ๋์ฝ๋๋ ์ ์ธ๊ณ ๊ฑฐ์ ๋ชจ๋ ์ธ์ด์ ๊ธฐํธ๋ฅผ ํฌํจํ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ ํ์ค์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์ค ๊ฒ์
๋๋ค. ์ฆ, ๋ชจ๋ ์ธ์ด์ ๊ฑฐ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ํน์ ์ฝ๋ ๋ชฉ๋ก์
๋๋ค. ์ ์ฒด ์ ๋์ฝ๋ ํ
์ด๋ธ์ ๋งค์ฐ ํฌ๋ฉฐ, ๋ฌผ๋ก ๊ทธ๊ฒ์ ์๊ธฐํ ํ์๊ฐ ์์ต๋๋ค. ๋ค์์ ๊ทธ๊ฒ์ ์์ ๋ถ๋ถ์
๋๋ค.
![๊ธฐ๋ณธ ์ ํ์ ํ๋ ๋ฐ ์ถ์ - 5]()
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฌธ์๊ฐ ์ ์ฅ๋๋ ๋ฐฉ์์ ์ดํดํ๊ณ ํน์ ๋ฌธ์์ ๋ํ ์ฝ๋๋ฅผ ์๊ณ ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์์ ํญ์ ํด๋น ๋ฌธ์๋ฅผ ์์ฑํ ์ ์๋ค๋ ์ ์ ๊ธฐ์ตํ๋ ๊ฒ์
๋๋ค. ์์์ ์ซ์๋ก ์๋ํด ๋ด
์๋ค.
public static void main(String[] args) {
int x = 32816;
char c = (char) x ;
System.out.println(c);
}
์ฝ์ ์ถ๋ ฅ: ่ฐ ์ด๊ฒ์ Java์์
char ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ์์
๋๋ค . ๊ฐ ๊ธฐํธ๋ ์ซ์, ์ฆ 16๋นํธ(2๋ฐ์ดํธ) ์ซ์ ์ฝ๋์ ํด๋นํฉ๋๋ค. ์ ๋์ฝ๋์์ 32816์ ํ์ ่ฐ์ ํด๋นํฉ๋๋ค. ๋ค์ ์ฌํญ์ ์ ์ํ์ญ์์ค. ์ด ์์์๋
int ๋ณ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ด๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์์ 32๋นํธ๋ฅผ ์ฐจ์งํ๋ ๋ฐ๋ฉด
char๋ 16๋นํธ๋ฅผ ์ฐจ์งํฉ๋๋ค. ์ฌ๊ธฐ์๋ int๋ฅผ ์ ํํ์ต๋๋ค . ์ซ์(32816)๊ฐ short์ ๋ง์ง ์๊ธฐ ๋๋ฌธ
์
๋๋ค .
char ์ ํฌ๊ธฐ (
short ์ ๋ง์ฐฌ๊ฐ์ง๋ก )๋ 16๋นํธ์ด์ง๋ง
char ๋ฒ์ ์๋ ์์๊ฐ ์์ผ๋ฏ๋ก
char ์ "์์" ๋ถ๋ถ์
๋ฒ์๋ ๋ ๋ฐฐ์
๋๋ค(
์งง์ ์ ํ์ ๊ฒฝ์ฐ 32767 ๋์ 65536). ์ฝ๋๊ฐ 65536 ๋ฏธ๋ง์ธ ํ
int๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ 65536๋ณด๋ค ํฐ
int ๊ฐ์ ์์ฑํ๋ฉด 16๋นํธ ์ด์์ ์ฐจ์งํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ณํ์ด ์ข์์ง๋๋ค.
char c = (char) x;
์ถ๊ฐ ๋นํธ๋ ํ๊ธฐ๋๊ณ (์์์ ์ค๋ช
ํ ๋๋ก) ๊ทธ ๊ฒฐ๊ณผ๋ ๋งค์ฐ ์์์น ๋ชปํ ๊ฒ์
๋๋ค.
๋ฌธ์ ๋ฐ ์ ์ ์ถ๊ฐ์ ํน์ ๊ธฐ๋ฅ
ํน์ดํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
public class Main {
public static void main(String[] args) {
char c = '1';
int i = 1;
System.out.println(i + c);
}
}
์ฝ์ ์ถ๋ ฅ:
50 O_ะ ์ด๋ป๊ฒ ์ดํด๊ฐ ๋ฉ๋๊น? 1+1. 50์ ์ด๋์์ ์์ต๋๊น?!
char
๊ฐ์ด 0์์ 65536 ๋ฒ์์ ์ซ์๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ์ด๋ฌํ ์ซ์๊ฐ ๋ฌธ์์ ์ ๋์ฝ๋ ํํ์ด๋ผ๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ์์ต๋๋ค .
๋ฌธ์ ์ ์ผ๋ถ ์ ์ ์ ํ์
![๊ธฐ๋ณธ ์ ํ์ ํ๋ ๋ฐ ์ถ์ - 6]()
์ถ๊ฐํ๋ฉด
๋ฌธ์๊ฐ ํด๋น ์ ๋์ฝ๋ ์ซ์๋ก ๋ณํ๋ฉ๋๋ค. ์ฝ๋์์ 1๊ณผ '1'์ ์ถ๊ฐํ๋ฉด ๊ธฐํธ '1'์ด ์์ฒด ์ฝ๋์ธ 49๋ก ๋ณํ๋ฉ๋๋ค(์ ํ์์ ํ์ธํ ์ ์์). ๋ฐ๋ผ์ ๊ฒฐ๊ณผ๋ 50์
๋๋ค. ๋ค์ ํ ๋ฒ ์ฐ๋ฆฌ์ ์ค๋ ์น๊ตฌ ่ฐ๋ฅผ ์๋ก ๋ค์ด ์ด๋ค ์ซ์์ ๋ํด ๋ด
์๋ค.
public static void main(String[] args) {
char c = '่ฐ';
int x = 200;
System.out.println(c + x);
}
์ฝ์ ์ถ๋ ฅ:
33016 ์ฐ๋ฆฌ๋ ์ด๋ฏธ ่ฐ๊ฐ 32816์ ํด๋นํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ซ์์ 200์ ๋ํ๋ฉด ๊ฒฐ๊ณผ๋ 33016์
๋๋ค. :) ๋ณด์๋ค์ํผ ์ฌ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ๋งค์ฐ ๊ฐ๋จํ์ง๋ง ์์ง ๋ง์์ผ ํฉ๋๋ค. .
GO TO FULL VERSION