항 operand
연산자 operaor
프로그램에서 여러가지 연산자가 사용되고 있다
항을 이용하여 연산하는 기호
1 + 2 = ? 일 때,
1,2 = 항
+,= = 연산자
항의 개수에 따른 연산자 구분
단항 연산자 : 항이 한 개인 연산자
이항 연산자 : 항이 두 개인 연산자(가장 많이 씀)
삼항 연산자 : 항이 세 개인 연산자
대입 연산자
= (이퀄)
프로그램에서는 어싸인먼트(assignment)라고 한다
값을 대입해주는 연산자
어싸인먼트를 중심으로 왼쪽이 lvalue(=leftValue) 오른쪽을 rvalue(rightvalue) 라고 한다,
rvalue의 값을 lvalue에 대입해주는 연산자이다.
대입연산자는 우선순위가 가장 낮은 연산자이다.(마지막에 연산된다)
부호 연산자
+,-
단항 연산자
변수나 상수의 값을 양수, 음수로 만들어 주는 연산자.
-변수에 +,-를 사용한다고 해서 변수의 값이 변하는 것은 아니다, 변수의 값을 변경하려면 대입연산자를 사용해야 한다.
산술 연산자
더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%)
%는 나머지를 구하는 연산자로 특정 범위 안의 수를 구할 떄 종종 사용한다.
ex) 숫자 n의 나머지
= 0 ~ n-1까지 범위의 수
증가 감소 연산자
단항 연산자
++, --
1만큼 더하거나(++) 1만큼 뺄 때(--) 사용하는 연산자
앞에쓰냐 뒤에쓰냐에 따라 값이 달라진다.
ex1) val = ++num;
먼저 num 값이 1 증가한 후 val 변수에 대입
val 변수에 기존 num값을 먼저 대입한 후 val 변수에 대입
관계 연산자
뭐가 더 크냐 작냐
이항 연산자
연산의 결과가 true(참) or false(거짓)으로 나온다.
왼쪽 항이 크면 참, 아니면 거짓
< 왼쪽 항이 작으면 참, 아니면 거짓
= 왼쪽 항이 오른쪽 항보다 크거나 같으면 참, 아니면 거짓
<= 왼쪽 항이 오른쪽 항보다 작거나 같으면 참, 아니면 거짓
== 두 개의 항 값이 같으면 참, 아니면 거짓
!= 두 개 항이 다르면 참, 아니면 거짓
논리 연산자
관계 연산자와 혼합하여 많이 사용하는 연산자
연산의 결과가 true(참), false(거짓)으로 반환된다.
&& (논리 곱)
: 두 항이 모두 true인 경우만 true, 아닌 경우는 거짓
|| (논리 합)
: 두 항 중 하나의 항만 true여도 true, 두 항이 모두 거짓이면 거짓
! (부정)
: 단항 연산자.
true인 경우는 false로 바꾸고, false인 경우는 true로 변경
단락 회로 평가(short circuit evaluation)
: 논리 곱(&&)는 두 항이 모두 true 일 때만 결과가 true
-> 앞의 항이 false면 뒤 항의 결과를 평가하지 않아도 false이다.
|| (논리 합)은 두 항이 모두 false 알 때만 결과가 false
-> 앞의 항이 true면 뒤 항의 결과를 평가하지 않아도 true이다.
= 단락 회로 평가에서 평가하지 않는다는 말은 실행되지 않는다는 말이다.
복합 대입 연산자
프로그램에서 많이 쓰는 연산자
대입 연산자와 다른 연산자를 함께 사용하는것
+= : 두 항의 값을 더해서 왼쪽 항에 대입
-= : 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입
*= : 두 항의 값을 곱해서 왼쪽 항에 대입
/= : 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입=
%= : 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입
조건 연산자
3항 연산자
조건의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 식이나 결과가 수행된다.
제어문 중 조건문을 간단히 표현 할 때 사용할 수 있음
조건식 ? 결과1 : 결과2;
: 조건의 결과가 참이면 결과1을 수행, 조건의 결과가 거짓이면 결과2를 수행
비트 연산자
각 하나의 비트별로 연산하는 연산자
자바에서 많이 쓰이진 않음
비트 연산자는 정수에만 사용 할 수 있다.
~ : 비트의 반전 (1의 보수를 구할 때 씀)
& : 비트 단위 AND (비트가 둘 다 1인 경우만 1, 둘중 하나라도 0인 경우 0)
l : 비트 단위 OR (둘 중에 한 비트라도 1이 있으면 1, 그 외는 0)
-^ : 비트 단위 XOR (두 비트가 같은 경우는 0 다른경우는 1)
<< : 왼쪽 shift (a<<2 : 변수 a를 2비트 만큼 왼쪽으로 이동)
: 오른쪽 shift (a>>2 : 변수 a를 2비트 만큼 오른쪽으로 이동)
: 오른쪽 shift (>>동일한 연산, 채워지는 비트가 부호와 상관없이 0)