Chapter 3 : ๐งฎ ๊ณ์ฐ ํ๊ธฐ (์ฐ์ฐ์)
๐ Java ํ๋ก๊ทธ๋๋ฐ ์์๋ ๋ณ์, ์์ ๋ค์ ๊ณ์ฐํ๊ธฐ ์ํด์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
์ด๋ค ์ฐ์ฐ์๋ค์ด ์๊ณ , ์ด๋ป๊ฒ ์ฐ์ฐ์ ํ๋์ง ๋ณด๊ธฐ
์ฐ์ฐ์์ ํผ์ฐ์ฐ์์ ๋ํ ์ดํด
์ฐ์ฐ์ : ๋ง์
, ๋บ์
์ฒ๋ผ ๊ณ์ฐํ ๊ธฐํธ โ
ํผ์ฐ์ฐ์ : ์ฐ์ฐ์๋ก ์ธํด ๊ณ์ฐ๋๋ ์ซ์ ๐ข
[์ฝ๋ ์ค๋ํซ] ๊ณ์ฐ ์ฝ๋
int x = 5;
int y = 10;
int z = x + y; // 5(ํผ์ฐ์ฐ์) +(์ฐ์ฐ์) 10(ํผ์ฐ์ฐ์) ๊ณ์ฐ
System.out.println(z); // ์ถ๋ ฅ๊ฐ : 15
๊ณ์ฐํ ๋ ๊ณ์ฐ์ ๋์์ด ๋๋๊ฒ์ด ํผ์ฐ์ฐ์ ์ด๋ฉฐ, ๊ณ์ฐ์ ๋ชฉ์ ์ด ๋๋๊ฒ์ด ์ฐ์ฐ์
์ฐ์ฐ์ ์ข
๋ฅ
์ฐ์ฐ์๋ ์ฌ์น์ฐ์ฐ ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ์ฐ์ฐ์๊ฐ ์์ต๋๋ค.
์ฐ์ ์ฐ์ฐ์
+ - * / % << >>
์ฌ์น ์ฐ์ฐ๊ณผ ๋นํธ์ฐ์ฐ
๋น๊ต ์ฐ์ฐ์
> < >= <= == !=
ํฌ๊ณ ์์๊ณผ ๊ฐ๊ณ ๋ค๋ฆ์ ๋น๊ต
๋
ผ๋ฆฌ ์ฐ์ฐ์
&&
๋์
์ฐ์ฐ์
= ++ —-
์ฐ๋ณ์ ๊ฐ์ ์ข๋ณ์ ์ ์ฅ, ์ฐ์ฐ ๋ณตํฉ ๋์
๊ธฐํ ์ฐ์ฐ์
(type) ? : instance of
ํ๋ณํ ์ฐ์ฐ์, ์ผํญ ์ฐ์ฐ์, instance of ์ฐ์ฐ์
- ์ฐ์ ์ฐ์ฐ์
- ์ฌ์น ์ฐ์ฐ ๋ฐ ๋นํธ์ฐ์ฐ์ ํฌํจํฉ๋๋ค. (๋นํธ์ฐ์ฐ์ ๋ค๋ฅธ ์ฑํฐ์์ ๋ค๋ค๋ณด์์.)
- ์ฌ์น ์ฐ์ฐ์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๊ฐ์ ์๋ตํฉ๋๋ค.
- +
(๋ง์
), -
(๋บ์
), *
(๊ณฑ์
), /
(๋๋์
/๋ชซ), %
(๋๋์
/๋๋จธ์ง)
- [์ฝ๋ ์ค๋ํซ] ์ฌ์น ์ฐ์ฐ
```java
// ์ฌ์น ์ฐ์ฐ
System.out.println(4 + 2); // 6
System.out.println(4 - 2); // 2
System.out.println(4 * 2); // 8
System.out.println(4 / 2); // 2
System.out.println(5 / 2); // 2
System.out.println(2 / 4); // 0
System.out.println(4 % 2); // 0
System.out.println(5 % 2); // 1
// ์ฐ์ ์์ ์ฐ์ฐ
System.out.println(2 + 2 * 2); // 6
System.out.println((2 + 2) * 2); // 8
System.out.println(2 + (2 * 2)); // 6
// ๋ณ์๋ฅผ ์ด์ฉํ ์ฐ์ฐ
int a = 20;
int b = 10;
int c;
// ๋ง์
c = a + b;
System.out.println(c); // 30
// ๋บ์
c = a - b;
System.out.println(c); // 10
// ๊ณฑ์
c = a * b;
System.out.println(c); // 200
// ๋๋์
(๋ชซ)
c = a / b;
System.out.println(c); // 2
// ๋๋์
(๋๋จธ์ง) = ๋๋จธ์ง ์ฐ์ฐ
c = a % b;
System.out.println(c); // 0
```
๋น๊ต ์ฐ์ฐ์
๊ฐ์ ํฌ๊ณ /์์์ ๋น๊ตํ๊ฑฐ๋ ๊ฐ๊ณ /๋ค๋ฆ ์ ๋น๊ตํ์ฌ ์ฐธ(true)/๊ฑฐ์ง(false) ๊ฐ์ธ boolean ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
>
(ํฌ๋ค) , <
(์๋ค), >=
(ํฌ๊ฑฐ๋ ๊ฐ๋ค), <=
(์๊ฑฐ๋ ๊ฐ๋ค), ==
(๊ฐ๋ค), !=
(๋ค๋ฅด๋ค)
[์ฝ๋ ์ค๋ํซ] ๋น๊ต ์ฐ์ฐ
// ๋น๊ต ์ฐ์ฐ์ (์ฐธ์ด๋ฉด true, ๊ฑฐ์ง์ด๋ฉด false)
System.out.println(10 > 9); // 10 ๋ 9 ๋ณด๋ค ํฌ๋ค (์ฐธ์ด๋ฉด true, ๊ฑฐ์ง์ด๋ฉด false)
System.out.println(10 >= 9); // 10 ๋ 9 ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค (true)
System.out.println(10 < 9); // 10 ๋ 9 ๋ณด๋ค ์๋ค (false)
System.out.println(10 <= 9); // 10 ๋ 9 ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค (false)
System.out.println(10 == 10); // 10 ๋ 10 ์ ๊ฐ๋ค (true)
System.out.println(10 == 9); // 10 ๋ 9 ๊ณผ ๊ฐ๋ค (false)
System.out.println(10 != 10); // 10 ๋ 10 ์ ๊ฐ์ง ์๋ค (false)
System.out.println(10 != 9); // 10 ๋ 9 ๊ณผ ๊ฐ์ง ์๋ค (true)
๋
ผ๋ฆฌ ์ฐ์ฐ์
๋น๊ต ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ฐ์ ์ ์๋ boolean ๊ฐ์ ์ฐ๊ฒฐํ๋ ์ฐ์ฐ์ ์
๋๋ค.
์กฐ๊ฑด์ ์ฐ๊ฒฐ ํ์์๋์ boolean ๊ฐ๋ค์ ์กฐํฉํ์ฌ ์ฐธ(true)/๊ฑฐ์ง(false) ๊ฐ์ธ boolean ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
&&
(AND = ํผ์ฐ์ฐ์ ๋ชจ๋ ์ฐธ), ||
(OR = ํผ์ฐ์ฐ์ ๋์ค ํ๋๋ผ๋ ์ฐธ), !
(ํผ์ฐ์ฐ์์ ๋ฐ๋ boolean ๊ฐ)
[์ฝ๋ ์ค๋ํซ] ๋
ผ๋ฆฌ ์ฐ์ฐ
// ๋
ผ๋ฆฌ ์ฐ์ฐ์
boolean flag1 = true;
boolean flag2 = true;
boolean flag3 = false;
System.out.println(flag1); // true
System.out.println(flag2); // true
System.out.println(flag3); // false
// ํผ์ฐ์ฐ์ ์ค ํ๋๋ผ๋ true ์ด๋ฉด true
System.out.println(flag1 || flag2); // true
System.out.println(flag1 || flag2 || flag3); // true
// ํผ์ฐ์ฐ์ ๋ชจ๋ true ์ด๋ฉด true
System.out.println(flag1 && flag2); // true (flag1, flag2 ๋ชจ๋ true ๋ผ์)
System.out.println(flag1 && flag2 && flag3); // false (flag3์ false ๋ผ์)
// And ์ฐ์ฐ
System.out.println((5 > 3) && (3 > 1)); // 5 ๋ 3 ๋ณด๋ค ํฌ๊ณ , 3 ์ 1 ๋ณด๋ค ํฌ๋ค (true)
System.out.println((5 > 3) && (3 < 1)); // 5 ๋ 3 ๋ณด๋ค ํฌ๊ณ , 3 ์ 1 ๋ณด๋ค ์๋ค (false)
// Or ์ฐ์ฐ
System.out.println((5 > 3) || (3 > 1)); // 5 ๋ 3 ๋ณด๋ค ํฌ๊ฑฐ๋, 3 ์ 1 ๋ณด๋ค ํฌ๋ค (true)
System.out.println((5 > 3) || (3 < 1)); // 5 ๋ 3 ๋ณด๋ค ํฌ๊ฑฐ๋, 3 ์ 1 ๋ณด๋ค ์๋ค (true)
System.out.println((5 < 3) || (3 < 1)); // 5 ๋ 3 ๋ณด๋ค ์๊ฑฐ๋, 3 ์ 1 ๋ณด๋ค ์๋ค (false)
// System.out.println(1 < 3 < 5); // ๋ถ๊ฐ๋ฅํ ์ฝ๋
// ๋
ผ๋ฆฌ ๋ถ์ ์ฐ์ฐ์
System.out.println(!flag1); // false (flag1 ๊ฐ์ ๋ฐ๋)
System.out.println(!flag3); // true (flag3 ๊ฐ์ ๋ฐ๋)
System.out.println(!(5 == 5)); // false
System.out.println(!(5 == 3)); // true
๋์
์ฐ์ฐ์
๋ณ์๋ฅผ ๋ฐ๋ก ์ฐ์ฐํด์ ๊ทธ์๋ฆฌ์์ ์ ์ฅํ๋ ์ฐ์ฐ์
๊ธฐ๋ณธ ๋์
์ฐ์ฐ์ ์ธ =
์ ๋ค๋ฅธ ์ฐ์ฐ์ ํจ๊ป์ฐ๋ ๋ณตํฉ ๋์
์ฐ์ฐ์ ๊ฐ ์์ต๋๋ค. (+=
, -=
, *=
…)
๋ณตํฉ ๋์
์ฐ์ฐ์ ๋ ๊ธฐ๋ณธ ๋์
์ฐ์ฐ์ ๋ฅผ ์ฌํํ๊ฒ ์์ฑํ๊ฒ ํด์ฃผ๋๊ฒ์ด์ง ๊ธฐ๋ฅ์ ๊ฐ์ต๋๋ค.
์ถ๊ฐ๋ก, += 1
๋ ++
๊ณผ ๋์ผํฉ๋๋ค. (ํผ์ฐ์ฐ์์ 1 ๋ํด์ฃผ๊ธฐ)
๋๊ฐ์ด -= 1
์ —-
์ ๋์ผํฉ๋๋ค. (ํผ์ฐ์ฐ์์ 1 ๋นผ์ฃผ๊ธฐ)
[์ฝ๋ ์ค๋ํซ] ๋์
์ฐ์ฐ์
// ๋์
์ฐ์ฐ์
int number = 10;
number = number + 2;
System.out.println(number); // 12
number = number - 2;
System.out.println(number); // 10
number = number * 2;
System.out.println(number); // 20
number = number / 2;
System.out.println(number); // 10
number = number % 2;
System.out.println(number); // 0
number = number++;
System.out.println(number); // 2
number = number--;
System.out.println(number); // 0
// ๋ณตํฉ ๋์
์ฐ์ฐ์
number = 10;
number += 2;
System.out.println(number); // 12
number -= 2;
System.out.println(number); // 10
number *= 2;
System.out.println(number); // 20
number /= 2;
System.out.println(number); // 10
number %= 2;
System.out.println(number); // 0
<aside>
๐ฅ **๋์
์ฐ์ฐ์ ์ค์ ์ฆ๊ฐ ์ฐ์ฐ์ ์ธ๋ ์ฃผ์ํ ์ !**
- `++` ๋๋ `—-` ๋ฅผ ๋ถ์ด๋ฉด ํผ์ฐ์ฐ์๊ฐ 1 ๋ํด์ง๊ฑฐ๋ 1 ๋นผ๊ธฐ๊ฐ ๋๋ค๊ณ ๋ง์๋๋ ธ๋๋ฐ์.
- ์ฃผ์ํ ์ ์, ํผ์ฐ์ฐ์ ๋ค์ ๋ถ์ด๋, ์์ ๋ถ์ด๋์ ๋ฐ๋ผ์ ์ฐ์ฐ์์๊ฐ ๋ฌ๋ผ์ง๋๋ค!!
| ์ฐ์ฐ์ | ์ฐ์ฐ์ ์์น | ๊ธฐ๋ฅ | ์ฐ์ฐ ์ |
| --- | --- | --- | --- |
| ++ | ++{ํผ์ฐ์ฐ์} | ์ฐ์ฐ ์ ์ ํผ์ฐ์ฐ์์ 1 ๋ํด์ค๋๋ค. | val = ++num;
num๊ฐ+1 ํ์ val๋ณ์์ ์ ์ฅ |
| ++ | {ํผ์ฐ์ฐ์}++ | ์ฐ์ฐ ํ์ ํผ์ฐ์ฐ์์ 1 ๋ํด์ค๋๋ค. | val = num++;
num๊ฐ์ val๋ณ์์ ์ ์ฅ ํ num+1 |
| — | —{ํผ์ฐ์ฐ์} | ์ฐ์ฐ ์ ์ ํผ์ฐ์ฐ์์ 1 ๋นผ์ค๋๋ค. | val = —num;
num๊ฐ-1 ํ์ val๋ณ์์ ์ ์ฅ |
| — | {ํผ์ฐ์ฐ์}— | ์ฐ์ฐ ํ์ ํผ์ฐ์ฐ์์ 1 ๋นผ์ค๋๋ค. | val = num—;
num๊ฐ์ val๋ณ์์ ์ ์ฅ ํ num-1 |
- ์ด์ฒ๋ผ ๋์
์ฐ์ฐํ ๋ ๋ฟ๋ง์๋๋ผ ์ฐ์ฐ์ ์ง์ ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ /ํ์ ์ฉ์ด ๋๋ฉ๋๋ค.
- ์ค์ต ์ฝ๋๋ฅผ ํตํด ์ค์ตํด๋ณผ๊น์?
- [์ฝ๋ ์ค๋ํซ] ๋์
์ฆ๊ฐ ์ฐ์ฐ์
```java
// ๋์
์ฆ๊ฐ ์ฐ์ฐ์
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 10;
int val = ++a + b--; // a ๋ ์ฐ์ฐ์ ์ +1, b ๋ ์ฐ์ฐํ์ -1
System.out.println(a); // 11
System.out.println(b); // 9
System.out.println(val); // 21
// 11 + 9 ๊ฐ ์ 21์ด ๋์ค๋๊ฑฐ์ฃ ??
// ๊ทธ ์ด์ ๋
// a ๋ val ์ฐ์ฐ์ ์ ++ ๊ฐ ์ํ๋์ด์ 11๋ก ์ฐ์ฐ๋์์ง๋ง
// b ๋ val ์ฐ์ฐํ์ -- ๊ฐ ์ํ๋์ด์ ๊ธฐ์กด๊ฐ์ด 10์ผ๋ก ์ฐ์ฐ๋ ํ -- ๊ฐ ์ํ๋์์ต๋๋ค.
// ๋ฐ๋ผ์ ์ฐ์ฐ๋ a๊ฐ์ธ 11๊ณผ ์ฐ์ฐ๋๊ธฐ์ b๊ฐ์ธ 10์ด ๋ํด์ ธ์ 21์ด ๋๊ฒ๋๋ค!
int c = a--; // c ์ a ๊ฐ ๋์
ํ a-1 (์ฆ, a=10, c=11)
int d = ++b; // b ๊ฐ +1 ํ์ d ์ ๋์
(์ฆ, b=10, d=10)
int val = c-- * ++d; // c ๋ ์ฐ์ฐํ์ -1, d ๋ ์ฐ์ฐ์ ์ +1
System.out.println(a); // 10
System.out.println(b); // 10
System.out.println(c); // 11
System.out.println(d); // 10
System.out.println(val); // 11 * 11 = 121
// 11 * 10 ์ด ์ 121์ด ๋์ค๋๊ฑฐ์ฃ ??
// ๊ทธ ์ด์ ๋
// c ๋ val ์ฐ์ฐํ์ -- ๊ฐ ์ํ๋์ด์ ๊ธฐ์กด๊ฐ์ด 11๋ก ์ฐ์ฐ๋ ํ -- ๊ฐ ์ํ๋์์ง๋ง
// d ๋ val ์ฐ์ฐ์ ์ ++ ๊ฐ ์ํ๋์ด์ 11๋ก ์ฐ์ฐ๋์์ต๋๋ค.
// ๋ฐ๋ผ์ ์ฐ์ฐ์ a๊ฐ์ธ 11๊ณผ ์ฐ์ฐ๋ b๊ฐ์ธ 11์ด ๊ณฑํด์ ธ์ 121์ด ๋๊ฒ๋๋ค!
}
}
```
</aside>
- ๊ธฐํ ์ฐ์ฐ์
- ํ๋ณํ ์ฐ์ฐ์
- 1์ผ์ฐจ ๊ฐ์์์ ๋ฐฐ์ด๋ด์ฉ์ผ๋ก ๊ดํธ ์์ ๋ณํํ ํ์
์ ๋ฃ์ผ๋ฉด ํผ์ฐ์ฐ์์ ํ์
์ด ๋ณ๊ฒฝ ๋ฉ๋๋ค.
```java
// ํ๋ณํ ์ฐ์ฐ์
int intNumber = 93 + (int) 98.8; // 93 + 98
double doubleNumber = (double) 93 + 98.8; // 93.0 + 98.8
```
- ์ผํญ ์ฐ์ฐ์
- ๋น๊ต ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ๋ผ ์๋ตํ ๊ฐ์ ์ง์ ์ง์ ํ ์ ์๋ ์ฐ์ฐ์ ์
๋๋ค.
- ์ผํญ ์ฐ์ฐ์๋ 3๊ฐ์ง ํผ์ฐ์ฐ์๊ฐ ์กด์ฌํ์ฌ ์ผํญ ์ฐ์ฐ์ ๋ผ๊ณ ํฉ๋๋ค. (`์กฐ๊ฑด`/`์ฐธ๊ฒฐ๊ณผ`/`๊ฑฐ์ง๊ฒฐ๊ณผ`)
- `(์กฐ๊ฑด)` `?` `(์ฐธ๊ฒฐ๊ณผ)` `:` `(๊ฑฐ์ง๊ฒฐ๊ณผ)`
```java
// ์ผํญ ์ฐ์ฐ์
int x = 1;
int y = 9;
boolean b = (x == y) ? true : false;
System.out.println(b); // false
String s = (x != y) ? "์ ๋ต" : "๋ก";
System.out.println(s); // ๋ก
int max = (x > y) ? x : y;
System.out.println(max); // 9
int min = (x < y) ? x : y;
System.out.println(min); // 1
```
- instance of ์ฐ์ฐ์
- 3์ฃผ์ฐจ์ ๋ฐฐ์ธ ํด๋์ค๊ด๋ จ ๋ด์ฉ์ผ๋ก ํด๋น ์ฃผ์ฐจ๋ ๋ฐฐ์ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
- ๊ฐ๋จํ ์ค๋ช
๋๋ฆฌ๋ฉด ํผ์ฐ์ฐ์๊ฐ ์กฐ๊ฑด์ ๋ช
์๋ ํด๋์ค์ ๊ฐ์ฒด์ธ์ง ๋น๊ตํ์ฌ ์ฐธ/๊ฑฐ์ง์ ์๋ตํด์ฃผ๋ ์ฐ์ฐ์ ์
๋๋ค.
- `(๊ฐ์ฒด๋ช
)` `instance of` `(ํด๋์ค๋ช
)`
์ฐ์ฐ์ ์ฐ์ ์์
์ฐ์ฐ์ ์ฌ๋ฌ๊ฐ๊ฐ ํจ๊ป ์๋ ์ฐ์ฐ์ ๊ณ์ฐํ ๋๋ ์ฐ์ ์์๊ฐ ์์ต๋๋ค.
์ ์ฐ์ ์์์ ๋ฐ๋ผ์ ์ต์ข
์ ์ธ ์๋ต๊ฐ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
๋จ, ๊ดํธ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๊ดํธ์์ ์ฐ์ฐ์ด ์ต์ฐ์ ์์๋ก ๊ณ์ฐ๋ฉ๋๋ค.
[์ฝ๋ ์ค๋ํซ] ์ฐ์ฐ์ ์ฐ์ ์์
// ์ฐ์ฐ์ ์ฐ์ ์์
int x = 2;
int y = 9;
int z = 10;
boolean result = x < y && y < z; // <,> ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ ํ && ๋
ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // true
result = x + 10 < y && y < z; // +10 ์ฐ์ ์ฐ์ฐ์ ๊ณ์ฐ ํ <,> ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ ํ && ๋
ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // false
result = x + 2 * 3 > y; // ์ฐ์ ์ฐ์ฐ์ ๊ณฑ์ผ > ๋ง์
์์ผ๋ก ๊ณ์ฐ ํ > ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // false (8>9)
result = (x + 2) * 3 > y; // ๊ดํธ์ ๋ง์
์ฐ์ฐ ํ ๊ดํธ ๋ฐ ๊ณฑ์
๊ณ์ฐ ํ > ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // true (12>9)
๐ ์ฐ์ฐ์ ์ฐ์ ์์ : ์ฐ์ > ๋น๊ต > ๋
ผ๋ฆฌ > ๋์
์ฐ์ ๋ณํ
๐ ์ฐ์ฐ ์ ์ ํผ์ฐ์ฐ์์ ํ์
์ ์ผ์น์ํค๋ ๊ฒ
๋ ํผ์ฐ์ฐ์์ ํ์
์ ๊ฐ๊ฒ ์ผ์น์ํจ๋ค. (๋์ค์ ์ ์ฅ๊ณต๊ฐ ํฌ๊ธฐ๊ฐ ๋ ํฐ ํ์
์ผ๋ก ์ผ์น
ํผ์ฐ์ฐ์์ ํ์
์ด int
๋ณด๋ค ์์ short
ํ์
์ด๋ฉด int
๋ก ๋ณํ
ํผ์ฐ์ฐ์์ ํ์
์ด long
๋ณด๋ค ์์ int
, short
ํ์
์ด๋ฉด Long
์ผ๋ก ๋ณํ
ํผ์ฐ์ฐ์์ ํ์
์ด float
๋ณด๋ค ์์ long
, int
, short
ํ์
์ด๋ฉด float
์ผ๋ก ๋ณํ
ํผ์ฐ์ฐ์์ ํ์
์ด double
๋ณด๋ค ์์ float
, long
, int
, short
ํ์
์ด๋ฉด double
์ผ๋ก ๋ณํ
์ด์ฒ๋ผ, ๋ณ์์ฌ๋ฌ๊ฐ๋ฅผ ์ฐ์ฐํ์๋ ๊ฒฐ๊ณผ๊ฐ์ ํผ์ฐ์ฐ์ ์ค ํํ ๋ฒ์๊ฐ ๊ฐ์ฅ ํฐ ๋ณ์ ํ์
์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
[์ฝ๋ ์ค๋ํซ] ์ฐ์ ๋ณํ
// ์ฐ์ ๋ณํ
public class Main {
public static void main(String[] args) {
short x = 10;
int y = 20;
int z = x + y; // ๊ฒฐ๊ณผ๊ฐ์ ๋ ํฐ ํํํ์
์ธ int ํ์
์ ๋ณ์๋ก๋ง ์ ์ฅํ ์ ์์ต๋๋ค.
long lx = 30L;
long lz = z + lx; // ๊ฒฐ๊ณผ๊ฐ์ ๋ ํฐ ํํํ์
์ธ long ํ์
์ ๋ณ์๋ก๋ง ์ ์ฅํ ์ ์์ต๋๋ค.
float fx = x; // ๊ฒฐ๊ณผ๊ฐ์ ๋ ํฐ ํํํ์
์ธ float ํ์
์ ๋ณ์๋ก๋ง ์ ์ฅํ ์ ์์ต๋๋ค.
float fy = y; // ๊ฒฐ๊ณผ๊ฐ์ ๋ ํฐ ํํํ์
์ธ float ํ์
์ ๋ณ์๋ก๋ง ์ ์ฅํ ์ ์์ต๋๋ค.
float fz = z; // ๊ฒฐ๊ณผ๊ฐ์ ๋ ํฐ ํํํ์
์ธ float ํ์
์ ๋ณ์๋ก๋ง ์ ์ฅํ ์ ์์ต๋๋ค.
System.out.println(lz);
System.out.println(fx);
System.out.println(fy);
System.out.println(fz);
}
}
๋นํธ ์ฐ์ฐ
Byte ๋ฅผ 8๋ฑ๋ถํ๊ฒ Bit ๋ผ๊ณ ๋ง์ ๋๋ฆฐ๊ฑฐ ๊ธฐ์ตํ์์ฃ ?
Bit ๋ 0,1 ๋์ค์ ํ๋์ ๊ฐ๋ง์ ์ ์ฅํ๋ ์ปดํจํฐ๊ฐ ์ ์ฅ(ํํ)๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ๋จ์๋ผ๊ณ ๋ง์๋๋ ธ์ต๋๋ค.
์ปดํจํฐ์ ๊ฐ์ฅ์์ ๋จ์์ธ Bit์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ์ค์์ Bit ์ฐ์ฐ์ด ์ ์ผ ๋น ๋ฆ
๋๋ค.
๋ฌผ๋ก ์ด์ ์ ๋ฐฐ์ด๋๋ก 0,1 ๊ฐ์ผ๋ก ์ฐ์ ์ฐ์ฐ์ ํ๊ฑฐ๋, ๋น๊ต์ฐ์ฐ์ ํ ์ ์์ง๋ง ๋นํธ ์ฐ์ฐ์ ํตํด ์๋ฆฌ์๋ฅผ ์ฎ๊ธธ์๋ ์์ต๋๋ค.
์ด์ฒ๋ผ Bit์ ์๋ฆฌ์๋ฅผ ์ฎ๊ธฐ๋ ๊ฒ์ ๋นํธ ์ฐ์ฐ์ด๋ผ๊ณ ํฉ๋๋ค.
<<(์ผ์ชฝ์ผ๋ก ์๋ฆฌ์ ์ฎ๊ธฐ๊ธฐ), >>(์ค๋ฅธ์ชฝ์ผ๋ก ์๋ฆฌ์ ์ฎ๊ธฐ๊ธฐ)
0,1 ์ 2์ง์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์,
์๋ฆฌ์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ ํ์๋งํผ 2์ ๋ฐฐ์๋ก ๊ณฑ์
์ด ์ฐ์ฐ๋๋๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
์๋ฆฌ์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ ํ์๋งํผ 2์ ๋ฐฐ์๋ก ๋๋์
์ด ์ฐ์ฐ๋๋๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
[์ฝ๋ ์ค๋ํซ] ๋นํธ ์ฐ์ฐ
// ๋นํธ ์ฐ์ฐ
// ์ฐธ๊ณ , 3์ ์ด์ง์๊ฐ์ 11(2) ์
๋๋ค. 12์ ์ด์ง์๊ฐ์ 1100(2) ์
๋๋ค.
// (2) ํ๊ธฐ๋ ์ด ์ซ์๊ฐ ์ด์ง์๊ฐ์ด๋ผ๋ ํ์ ์
๋๋ค.
System.out.println(3 << 2);
// 3์ ์ด์ง์๊ฐ์ธ 11(2) ์์ ์ผ์ชฝ์ผ๋ก 2๋ฒ ์ฎ๊ฒจ์ ธ์ 1100(2) ์ธ 12๊ฐ์ด ๋ฉ๋๋ค.
System.out.println(3 >> 1);
// 3์ ์ด์ง์๊ฐ์ธ 11(2) ์์ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋ฒ ์ฎ๊ฒจ์ ธ์ 1(2) ์ธ 1 ๊ฐ์ด ๋ฉ๋๋ค.