* 주석처리를 여러줄 하고 싶을 때
여러 줄을 드래그 한다음 ctrl 누른 상태에서 / 누르기
연산자(Operator)
연산 : 주어진 식을 계산하여 결과를 얻어내는 과정
피연산자 : 연산자의 작업대상
a + 5 : 식(expression)
a == n (a, n = 피연산자 operand)
(== 연산자 operator)
연산자의 종류
종류 |
연산자 |
단항연산자 |
++, --(증감연산자) +, -, ~(not) !(논리부정/참,거짓) 타입 |
산술연산자 |
+, /, % (나머지연산자) |
+, - |
|
>>, <<, >>> |
|
비교연산자 |
<, >, <=, >=, (=는 오른쪽에만 붙음), instanceof (자바에만있음) |
==, != |
|
논리연산자 |
& AND |
|
^ XOR |
|
| OR |
|
|| |
&& |
|
삼항연산자 |
? : |
대입연산자 |
=, *=, /=, %=, +=, -=, >>=, <<=, >>>=, &=, ^=, |= |
~ : 2진수 0010 앞에 ~를 붙여서 '~0010'을 하게 되면 → 1101로 바뀐다
! : boolean a = true라고 하고 a 앞에 !를 붙여서 !a라고 하면 false라고 나온다
<< : 비트가 0010일 떄, << 라고 해주면 이동해서 0100 이라고 된다
& : 2&3일 때, 0010과 0011을 비교해서 같으면 같은 값, 다르면 0으로 출력 → 0010 따라서 2
| : 2 | 3일 떄, 0010과 0011비교 둘중에 하나가 1이면 1로 출력 → 0011 따라서 3
^ : 2^3일 때, 0010과 0011 같으면 0, 다르면 1 → 0001 따라서 1
&& : a && b, a이고 b일 경우, a가 t이고 b가 f일 경우 f
? : aa =(조건)? a:b; → 조건이 참이면 a값, 거짓이면 b값을 aa에 대입
1. 산술연산자
a에 100을 넣었을 때 a%5는 100을 5로 나눈 값의 나머지의 값인데
나머지가 없으므로 0이 나온다
a%7은 7로 나눴을 떄 몫이 14이고 나머지가 2이므로 결과값이 2다
쉬프트 연산자 >>, <<, >>>(자바에만 있는 연산자)
3 = 0000 0011
-3 = 1111 0011
(맨 뒤 1을 남겨두고 나머지만 0, 1에서 바꿔준다
1 나오기 전의 0은 그대로)
-3 = -1*2^7 +2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1
-128 + 64 + 32 + 16 + 8 + 4 + 1
1) >> 오른쪽으로 비트수만큼 이동
앞에 비어있는 빈칸은 부호 비트로 채운다
2) << 왼쪽으로 비트수만큼 이동
뒤에 비어있는 빈칸은 0으로 채움
3) >>>(자바에만 있는 연산자) 오른쪽으로 비트수만큼 이동
앞에 비어있는 빈칸 0으로 채움
-6 구하기 전에 6부터 구하기
6 = 00000110
-6 = 11111010
-6 >> 2
2칸 오른쪽으로 이동이므로 오른쪽의 10은 사라짐
앞에 사라진 두칸은 부호비트로 채움 (-6의 부호비트는 1이므로 1)
11111110
얼마인지 알기 위해 부호를 바꿔봄
0000010 = 2
부호 다시 붙여서 -2
-6 = 1111 1111 1111 1111 1111 1111 1111 1010 (32 bit로 계산)
0011 1111 1111 1111 1111 1111 1111 1110 (두칸 이동)
맨 앞 두칸 0으로 채워서 양수로 바뀜
-6 = 11111010
왼쪽으로 두칸 이동
11101000
뒤집기 00011000 = 24
뒤집었으니 - 붙여줌
따라서 -24
2. 비트연산자
문자열 "b AND c =" 다음에 b&c 값이 오고 싶을 때 (b&c) 이렇게 괄호를 해줘야 한다
위에 표를 보면 위에서 부터 순서대로 계산을 하는데 그렇게 되면 + 이 & 보다 먼저 계산 되어서 에러가 뜬다
AND OR XOR에 전부 괄호를 넣고 계산을 해준다
3은 0011
5는 0101
3&5 0001 = 1
3|5 0111 = 7
3^5 0110 = 6
&&와 ||는 양 옆에 조건을 넣고 비교하는 것
AND에서 조건 두개가 참이므로 결과는 참
AND에서 둘다 거짓이므로 거짓
OR 에서 조건 둘다 거짓이므로 거짓이다
둘다 참이므로 참
3. 비교연산자
조건문에 있는 m과 n을 비교해서 맞는 것의 결과를 출력한다
4. 삼항연산자
변수 = (조건) ? 값1 : 값2;
위의 형태로 쓰이는데 괄호 안 값이 참이면 값1을 변수에 집어 넣고
괄호 안이 거짓이면 값2를 변수에 집어 넣는다
아래 괄호 조건에서 bb가 더 크므로 거짓이다 따라서 거짓이면 :(콜론) 우측 값인 bb의 값 200을 출력한다
변수가 문자열일 때 값에 문자열인 큰 따옴표를 사용한다
조건이 거짓이므로 우측 문자열을 출력한다
5. 대입연산자
+= 는 ii 값에 우측 값을 더한 결과가 대입된다
5는 0000 0101
<<2 왼쪽으로 두칸 이동하고 빈칸 0으로 채움
0001 0100 16 + 4 =20
3은 0011
2는 0010
같은 건 0, 다른 경우 1 출력
3^2 0001 = 1
6. 단항연산자
k는 1씩 커지고
kk는 1씩 작아지는 것
cc가 10인데 바로 밑에 줄에 ++cc라고 했으니 값이 증가한다
값이 증가한 cc를 dd값에 넣으므로 둘다 값이 11로 같다
'IT > JAVA' 카테고리의 다른 글
11. 반복문 (for, while) (0) | 2017.06.13 |
---|---|
10. 조건문 (if문, switch문) (0) | 2017.06.13 |
8. 형변환 (Casting) (0) | 2017.06.08 |
7. 자료형의 이해 (0) | 2017.06.08 |
6. 변수의 이해(Variable) (0) | 2017.06.07 |