study:java:javachobo:ch3
연산자
연산자(Operator)란?
연산자(Operator) | 어떠한 기능을 수행하는 기호(+,-,*,/ 등) |
피연산자(Operand) | 연산자의 작업 대상(변수,상수,리터럴,수식) |
어떠한 기능을 수행하는 기호를 말합니다.
예를 들면 +는 덧셈’이라는 기능을 수행하는 기호죠.
피연산자는 연산자의 작업대상을 말합니다.
예를 들어 a + b라는 식이 있다고 할 때,
<color blue>+는 연산자</color>이고, 연산자가 덧셈을 수행할 대상인 <color red>a와 b는 피연산자</color>입니다.
연산자의 종류
단항연산자 | : + - (타입) ++ – ~ ! |
이항연산자 | 산술 : + - * / % < < > > > > >
비교 : > < > = < = == !=
논리 : && || & ^ |
삼항연산자 | ? : |
대입연산자 | = |
연산자 우선순위
괄호의 우선순위가 제일 높다.
산술 > 비교 > 논리 > 대입
단항 > 이항 > 삼항
연산자의 연산진행방향은 왼쪽에서 오른쪽이다.( → )
예외적으로 단항,대입연산자만 오른쪽에서 왼쪽( ← ) 이다.
연산자의 우선순위를 정리한 표입니다.
우선순위가 높은 것 부터 낮은 것의 순으로 되어 있습니다.
같은 줄의 연산자들은 우선순위가 같습니다.
우선순위가 높은 것 부터 낮은 것 순으로 나열하면
단항, 이항, 삼항, 대입 연산자의 순입니다.
이항 연산자 중에는 산술, 비교, 논리 연산자의 순입니다.
우선순위 뿐만아니라 연산방향에 대해서도 알아두셔야 합니다.
연산방향은 같은 우선순위의 연산이 있을때 연산을 수행하는 방향을 말합니다.
단항과 대입연산자를 제외하고는 연산진행방향이 오른쪽에서 왼쪽입니다
예제
단항 > 이항 | -x + 3 |
곱셈,나눗셈 > 덧셈, 뺄셈 | x + 3*y |
산술 > 비교 | x+3 > y-2 |
비교 > 논리 | x>3 && x<5 |
대입은 항상 맨 끝에 | int i = x + y*3 |
주의사항
<
<, >
>, >
>
>는 덧셈연산자보다 우선순위가 낮다.
<color blue>x <
< 2 + 1</color> : <color red>x <
< (2 + 1)</color> 과 같다.
||, |(OR)는 &&, &(AND)보다 우선순위가 낮다.
<color blue>x < -1 || x > 3 && x < 5</color> : <color red>x < -1 || (x > 3 && x < 5)</color> 와 같다.
증감연산자(++,--)
증가연산자(++) | 피연산자의 값을 1 증가시킨다. |
감소연산자(- -) | 피연산자의 값을 1 감소시킨다. |
int i = 5 , j = 0 ;
전위형 | j = ++i; | ++i;
j = i; | 값이 참조되기 전에 증가시킨다 | j=6
i=6 |
후위형 | j = i++; | j = i;
++i; | 값이 참조된 후에 증가시킨다 | j=5
i=6 |
부호연산자(+,-)와 논리부정연산자
부호연산자(+,-) | ‘+’는 피연산자에 1을 곱하고
‘-’는 피연산자에 -1을 곱한다 |
논리부정연산자(!) | true는 false로, false는 true로
피연산자가 boolean일 때만 사용가능 |
비트전환연산자(~)
정수를 2진수로 표현했을 때, 1을 0으로 0은 1로 바꾼다.
정수형에만 사용가능.
10 → -10
~10 → -11
이항연산자의 특징
<color blue> 이항연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다. </color>
int보다 크기가 작은 타입은 int로 변환한다.
byte, char, short → int
피연산자 중 표현범위가 큰 타입으로 형변환 한다.
byte + short → int + int → int
char + int → int + int → int
float + int → float + float → float
long + float → float + float → float
float + double → double + double → double
나머지 연산자(%)
나누기한 나머지를 반환한다.
홀수, 짝수 등 배수검사에 주로 사용.
int remain = 10 % 8 ;
remain 에 나머지 2값이 들어간다.
나머지 연산자 예제
10 % 8 → 2
10 % -8 → 2
-10 % 8 → -2
-10 % -8 → -2
쉬프트 연산자(<<,>>,>>>)
2n으로 곱하거나 나눈 결과를 반환한다.
곱셈, 나눗셈보다 빠르다.
x <
< n 은 x * 2n과 같다.
8 << 2 는 8 * 22과 같다.
x >
> n 은 x / 2n과 같다.
8 >> 2 는 8 / 22과 같다.
비교연산자(>,<,>=,<=,==,!=)
피연산자를 같은 타입으로 변환한 후에 비교한다.
결과 값은 true 또는 false이다.
기본형(boolean제외)과 참조형에 사용할 수 있으나
참조형에는 ==와 !=만 사용할 수 있다.
예제
‘A’ < ‘B’ → 65 < 66 → true
‘0’ == 0 → 48 == 0 → false
‘A’ != 65 → 65 != 65 → false
비트연산자(&,|,^)
피연산자를 비트단위로 연산
실수형(float, double)을 제외한 모든 기본형에 사용가능
OR연산자 | | | 피연산자 중 어느 한 쪽이 1이면 1이다. |
AND연산자 | & | 피연산자 양 쪽 모두 1이면 1이다. |
XOR연산자 | ^ | 피연산자가 서로 다를 때 1이다. |
x | y | x | y | x & y | x ^ y |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 1 |
0 | 0 | 0 | 0 | 0 |
논리연산자(&&,||)
피연산자가 반드시 boolean이어야 하며 연산결과도 boolean이다.
&&가 || 보다 우선순위가 높다.
같이 사용되는 경우 괄호를 사용한다.
OR연산자 | || | 피연산자 중 어느 한 쪽이 true이면 true이다. |
AND연산자 | && | 피연산자 양 쪽 모두 true이면 true이다. |
x | y | x || y | x && y |
true | true | true | true |
true | false | true | false |
false | true | true | false |
false | false | false | false |
삼항연산자(? :)
(조건식) ? 식1 : 식2
조건식의 연산결과가
<color blue>true이면 ‘식1’의 결과</color>를 반환하고
<color red>false이면 ‘식2’의 결과</color>를 반환한다.
예제
int x = -10;
int absX = x >= 0 ? x : -x;
아래의 조건문과 동일하다.
if(x>=0) {
absX = x;
} else {
abxX = -x;
}
대입연산자(=,op=)
오른쪽 피연산자의 값을 왼쪽 피연산자에 저장한다.
단, <color blue>왼쪽 피연산자는 상수가 아니어야 한다.</color>
study/java/javachobo/ch3.txt · 마지막으로 수정됨: 2010/01/31 17:17 저자 starlits