연산을 합시다.
우선 연산자를 먼저 알아보고 실습을 하겠습니다.
연산자의 종류는 크게 8가지가 있으며,
연산자의 종류에 따라 계산의 순서가 바뀌기 때문에 연산자들의 우선순위는 알아두어야한다.
연산자의 우선 순위는 아래와 같다.
순위 |
종류 |
연산자 |
연산 방향 |
1 |
괄호, 배열, 구조체 |
( ) . [ ] -> :: |
좌→우 |
2 |
단항 연산자 |
*(간접) &(주소) ! - ++ -- +(부호) -(부호) sizeof new delete |
우→좌 |
3 |
구조체 결합연산자 |
.* ->* |
좌→우 |
4 |
승제 연산자 |
* / % |
좌→우 |
5 |
가감 연산자 |
+ - |
좌→우 |
6 |
시프트(Shift) 연산자 |
<< >> |
좌→우 |
7 |
비교 연산자 |
< <= > >= |
좌→우 |
8 |
등가 연산자 |
== != |
좌→우 |
9 |
비트 연산자 AND |
& |
좌→우 |
10 |
비트 연산자 XOR |
^ |
좌→우 |
11 |
비트 연산자 OR |
| |
좌→우 |
12 |
논리 연산자 AND |
&& |
좌→우 |
13 |
논리 연산자 OR |
|| |
좌→우 |
14 |
조건 연산자 |
?: |
우→좌 |
15 |
대입 연산자 |
= *= /= += -= %= <<= >>= &= ^= |= |
우→좌 |
16 |
나열 연산자 |
, |
좌→우 |
실습 1. 산술연산
더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%)
정수 연산에서 / 는 몫을, % 는 나머지를 구한다.
실습2. 증감연산
증감 연산자는 ++ , -- 의 두가지이며, 피연산자의 앞 또는 뒤에 붙어 값을 1 증가시키거나 1감소시킨다.
실습3. 대입 연산
연산자의 오른쪽 식의 결과를 왼쪽에 있는 변수에 대입한다.
실습4. 비교 연산과 논리 연산
비교 연산자는 두 개의 피연산자를 비교하여 true 또는 false의 논리 값을 내는 연산자이며,
논리 연산자는 논리값을 대상으로 AND, OR, XOR, NOT의 논리 연산을 하여 논리 값을 내는 연산자이다.
연산자 |
내용 |
예제 |
결과 |
a < b |
a가 b보다 작으면 true |
3<5 |
true |
a > b |
a가 b보다 크면 true |
3>5 |
false |
a <= b |
a가 b보다 작거나 같으면 true |
1<=0 |
false |
a >= b |
a가 b보다 크거나 같으면 true |
10>=10 |
true |
a == b |
a가 b와 같으면 true |
1==3 |
false |
a != b |
a가 b와 같지 않으면 true |
1!=3 |
true |
비교 연산자
연산자 |
내용 |
예제 |
결과 |
! a |
a가 true이면 false, false이면 true |
!(3<5) |
false |
a ^ b |
a와 b의 XOR 연산. a,b가 같으면 false |
(3<5)^(1==1) |
false |
a || b |
a와 b의 OR 연산. a와 b 모두 false인 경우에만 false |
(3>5)||(1==1) |
true |
a && b |
a와 b의 AND 연산. a와 b 모두 true인 경우에만 true |
(3<5)&&(1==1) |
true |
논리 연산자
주의 -> 20<=age<30 // 오류
(20<=age) && (age<30) // 정상
실습5. 조건 연산
조건 연산은 3개의 피연산자로 구성되어 삼항(ternary)연산자라고도 하며 형식은 다음과 같다.
condition ? result1 : result2 |
조건문condition이 true이면 결과 값은 result1의 결과값이되고,
false이면 result2의 값이 된다.
result1 과 result2는 식이 될 수도 있고 값이 될 수도 있다.
int x = 5; int y = 3; int s = (x>y)?1:-1; // x가 y보다 크기 때문에 1이 s에 대입된다. |
실습6. 비트 연산자
비트 논리 연산
비트 논리 연산은 피연산자의 각 비트들끼리 이루어지는 AND, OR, XOR, NOT 의 논리 연산으로 총4 개의 연산자가 있다.
& 연산자 : 피연산자 둘 중 하나라도 0이면 결과는 0
| 연산자 : 피연산자 둘 중 하나라도 1이면 결과는 1
^ 연산자 : 피연산자 두 비트가 같으면 결과는 0 , 다르면 결과는 1
~ 연산자 : 비트 반전: 1은 0으로 변환하고 0은 1로 변환한다.
비트 시프트 연산
3개의 연산자를 이용하여 새로운 비트를 오른쪽이나 왼쪽 끝에 삽입하면서 비트의 자리를 이동시키는 연산이다.
저장공간의 크기가 정해져 있으므로 시프트뢰는 방향에 따라 끝에 있는 비트는 사라지게 된다.
시프트 연산자 |
내용 |
a >> b |
a의 각 비트를 오른쪽으로 b번 시프트한다. 최상위 비트의 빈자리는 시프트 전의 최상위 비트로 다시 채운다. |
a >>> b |
a의 각 비트를 오른쪽으로 b번 시프트한다. 최상위 비트는 항상 0으로 채운다. 논리적 오른쪽 시프트라고 한다. |
a << b |
a의 각 비트를 왼쪽으로 b번 시프트한다. 최하위 비트의 빈자리는 항상 0으로 채운다. 산술적 왼쪽 시프트라고한다. |
ex>)
byte a = 5; byte b = (byte) (a << 2); // a값을 왼쪽으로 2비트 이동. b 값은 20 |
ex)
byte a = 20 byte b = (byte) (a >>> 2); // a값을 왼쪽으로 2비트 이동. b 값은 5 |
ex)
byte a = 20 byte b = (byte) (a >> 2); // a값을 오른쪽으로 2비트 이동. b 값은 5 byte c = (byte) 0xf8; // 0xf8는 -8을 16진수로 표현한 값 byte d = (byte) (c >> 2); // 변수 c를 오른쪽으로 2비트 이동. d값은 0xfe가 된다. // 0xfe는 십진수 -2 |
'JAVA > Welcome to JAVA World ! !' 카테고리의 다른 글
JAVA - Eclipse 환경설정부터 Class 생성까지 (0) | 2019.01.09 |
---|---|
JAVA - Eclipse 설치 (0) | 2019.01.08 |
JAVA - 환경변수 설정 (0) | 2019.01.08 |
JAVA 시작 _ JDK설치 (0) | 2019.01.07 |