연산자와 수식
연산자와 피연산자
- 연산자(operator) : 특정한 연산을 나타내는 기호
- 피연산자(operand) : 연산의 대상
자바에서 지원하는 연산자
여기서 주의할점은 연산자에는 우선순위가 존재한다.
수식
상수나 변수, 함수와 같은 피연산자들과 연산자의 조합
대입 연산자
- 대입 연산자(=)는 왼쪽 변수에 오른쪽 수식의 값을 계산하여 저장한다.
- 대입 연산자, 할당 연산자, 배정 연산자 모두 같은 뜻
산술 연산자
연산자 | 설명 |
---|---|
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
% | 나눗셈의 나머지 |
단항 연산자
연산자 | 의미 |
---|---|
+x | x를 양수로 만든다. |
-x | x를 음수로 만든다. |
++x | x값을 먼저 증감한 후에 다른 연산에 사용됨 |
x++ | x값을 먼저 사용한 후에, x값을 증감한다 |
—x | x값을 먼저 감소한 후에 다른 연산에 사용됨 |
x— | x값을 먼저 사용한 후에, x값을 감소한다. |
복합 대입 연산자
복합 대입 연산자 | 의미 |
---|---|
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = x % y |
관계 연산자
연산자 기호 | 의미 | 사용 예 |
---|---|---|
== | x와 y가 같은가? | x == y |
!= | x와 y가 다른가? | x != y |
> | x가 y보다 큰가? | x > y |
< | x가 y보다 작은가? | x < y |
>= | x가 y보다 크거나 같은가? | x >= y |
<= | x가 y보다 작거나 같은가? | x <= y |
연산자 결과는 boolean 값으로 나타남 = true or false
논리 연산자
연산자 기호 | 사용 예 | 의미 |
---|---|---|
&& | x && y | AND연산, x와 y가 모두 참이면 참, 그렇지 않으면 거짓 |
! | !x | NOT 연산, x가 참이면 거짓, x가 거짓이면 참 |
삼항 연산자
연산자 우선 순위에 주의
대입 연산자는 제일 마지막 우선순위이다
비트 연산자
연산자 | 의미 | 예 |
---|---|---|
~ | 비트별 NOT | ~(0x0FFF)은 0xfffff000이 된다. |
& | 비트별 AND | (0x0FFF & 0xFFF0)은 0x0FF0이 된다 |
^ | 비트별 XOR | (0x0FFF ^ 0xFFF0)은 0xF00F이 된다. |
비트별 OR | ||
<< | 비트 왼쪽 이동 | 0xFFF << 4는 0xFFF0이 된다. |
>> | 비트 오른쪽 이동 | 0xFFF0 >> 4는 0xFFF이 된다. |
>>> | 비트 오른쪽 이동(unsigned) | 왼쪽 비트가 부호비트로 채워지지 않고 0으로 채워진다. |
<<, >> 는 비트 시프트라고도 한다.
이를 계산하려면 2진수로 변환하여 변환된 2진수를 왼쪽이나 오른쪽으로 n개 만큼 이동하는 연산이다.
예 : 0xFFF0 >> 2
0xFFF0 = 0b1111 1111 1111 0000 >> 2 → 0b 0011 1111 1111 1100 → 0x3FFC
형변환
형변환(cast)는 어떤 자료형의 값을 다른 자료형의 값으로 바꾸어 주는 연산
y = (double) x;
축소변환
만약 double형에서 int형으로 형변환을 거치면 double의 소수점은 반올림이 되지 않고 그냥 사라져 버린다, 데이터의 일부를 잃을 수 있다.
확대 변환
더 큰 크기의 변수로 값을 이동하는 변환
double d = (double) 100;// 정수 100이 변수 d에 100.0으로 형변환되어서 저장
만약 두 피연산자의 자료형이 다르면?
만약 int형과 double형 두개를 연산을 한다고 가정을 하면 어느쪽을 기준으로 출력이 될까?
숫자가 높은쪽을 기준으로 해서 자료형 결과값이 나온다.
연산자와 수식
연산자와 피연산자
- 연산자(operator) : 특정한 연산을 나타내는 기호
- 피연산자(operand) : 연산의 대상
자바에서 지원하는 연산자
여기서 주의할점은 연산자에는 우선순위가 존재한다.
수식
상수나 변수, 함수와 같은 피연산자들과 연산자의 조합
대입 연산자
- 대입 연산자(=)는 왼쪽 변수에 오른쪽 수식의 값을 계산하여 저장한다.
- 대입 연산자, 할당 연산자, 배정 연산자 모두 같은 뜻
산술 연산자
연산자 | 설명 |
---|---|
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
% | 나눗셈의 나머지 |
단항 연산자
연산자 | 의미 |
---|---|
+x | x를 양수로 만든다. |
-x | x를 음수로 만든다. |
++x | x값을 먼저 증감한 후에 다른 연산에 사용됨 |
x++ | x값을 먼저 사용한 후에, x값을 증감한다 |
—x | x값을 먼저 감소한 후에 다른 연산에 사용됨 |
x— | x값을 먼저 사용한 후에, x값을 감소한다. |
복합 대입 연산자
복합 대입 연산자 | 의미 |
---|---|
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = x % y |
관계 연산자
연산자 기호 | 의미 | 사용 예 |
---|---|---|
== | x와 y가 같은가? | x == y |
!= | x와 y가 다른가? | x != y |
> | x가 y보다 큰가? | x > y |
< | x가 y보다 작은가? | x < y |
>= | x가 y보다 크거나 같은가? | x >= y |
<= | x가 y보다 작거나 같은가? | x <= y |
연산자 결과는 boolean 값으로 나타남 = true or false
논리 연산자
연산자 기호 | 사용 예 | 의미 |
---|---|---|
&& | x && y | AND연산, x와 y가 모두 참이면 참, 그렇지 않으면 거짓 |
! | !x | NOT 연산, x가 참이면 거짓, x가 거짓이면 참 |
삼항 연산자
연산자 우선 순위에 주의
대입 연산자는 제일 마지막 우선순위이다
비트 연산자
연산자 | 의미 | 예 |
---|---|---|
~ | 비트별 NOT | ~(0x0FFF)은 0xfffff000이 된다. |
& | 비트별 AND | (0x0FFF & 0xFFF0)은 0x0FF0이 된다 |
^ | 비트별 XOR | (0x0FFF ^ 0xFFF0)은 0xF00F이 된다. |
비트별 OR | ||
<< | 비트 왼쪽 이동 | 0xFFF << 4는 0xFFF0이 된다. |
>> | 비트 오른쪽 이동 | 0xFFF0 >> 4는 0xFFF이 된다. |
>>> | 비트 오른쪽 이동(unsigned) | 왼쪽 비트가 부호비트로 채워지지 않고 0으로 채워진다. |
<<, >> 는 비트 시프트라고도 한다.
이를 계산하려면 2진수로 변환하여 변환된 2진수를 왼쪽이나 오른쪽으로 n개 만큼 이동하는 연산이다.
예 : 0xFFF0 >> 2
0xFFF0 = 0b1111 1111 1111 0000 >> 2 → 0b 0011 1111 1111 1100 → 0x3FFC
형변환
형변환(cast)는 어떤 자료형의 값을 다른 자료형의 값으로 바꾸어 주는 연산
y = (double) x;
축소변환
만약 double형에서 int형으로 형변환을 거치면 double의 소수점은 반올림이 되지 않고 그냥 사라져 버린다, 데이터의 일부를 잃을 수 있다.
확대 변환
더 큰 크기의 변수로 값을 이동하는 변환
double d = (double) 100;// 정수 100이 변수 d에 100.0으로 형변환되어서 저장
만약 두 피연산자의 자료형이 다르면?
만약 int형과 double형 두개를 연산을 한다고 가정을 하면 어느쪽을 기준으로 출력이 될까?
숫자가 높은쪽을 기준으로 해서 자료형 결과값이 나온다.