3. 연산자
연산자의 종류와 우선순위
연산자란 연산자를 위해 사용되는 기호이다.
종류 | 연산자 | 설명 |
산술 연산자 | +, -, *, /, % | 사칙연산과 나머지 연산 |
단항 연산자 | - | 부호 연산자 |
! | 논리 부정 연산자 | |
++, -- | 증감 연산자 | |
기타 연산자 | =, +=, -=. *= | 대입 연산자 |
연산의 대부분은 우측에서 좌측이지만 단항 연산자와 대입연산자는 왼쪽에서 오른쪽으로 실행한다.
연산자에도 우선순위가 있고, 우선순위에 따라 연산순서가 결정된다.
우선자 순위 | 종류 | 연산자 |
1 | 최우선 연산자 | [ ], ( ) |
2 | 단항 연산자 | !, ~, +, -, ++, -- |
3 | 산술 연산자 | +, -, *, /, % |
4 | 쉬프트 연산자 | <<, >>, >>> |
5 | 비교 연산자 | <, >, >=, =<, ==, != |
6 | 논리 연산자 | &&, || |
7 | 삼항 연산자 | (조건) true / false |
8 | 대입 연산자 | =, +=, -=, *= |
9 | 후위 증감 연산자 | i++ |
산술 연산자
사칙연산과 나머지 계산을 수행하는 연산자들의 집합이다.
public static void main(String[] args)
{
int a = 10; // 변수 a 설정
int b = 3; // 변수 b 설정
//산술 연산자에 대입
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
}
결과 값은
13
7
30
3
1
으로 콘솔창에 출력된다.
여기서 중요한건 변수에 담은 값은 다음에 사용할 것이고, 변수에 담지 않으면 바로 계산식으로 결과를 보여준다.
단항 연산자
단항 연산자는 항이 하나인 연산자이다.
연산자 | 의미 | 사용법 | 설명 |
+, - | 부호 연산자 | -a | 변수의 부호를 바꿈 |
! | 부정 연산자 | !a | 논리 연산의 역으로 교체 ex) true => false |
++ | 증가 연산자 | ++a, a++ | 변수 a에 1을 더해서 삽입 |
-- | 감소 연산자 | --a, a-- | 변수 a에 1을 빼서 삽입 |
public static void main(String[] args)
{
int a = -1;
int b = 2;
b++;
++b;
System.out.println(a);
System.out.println(-b);
System.out.println(b++);
}
결과 값은
-1
-4
4
으로 콘솔창에 출력된다.
논리 부정 연산자
논리연산자는 논리 연산을 역으로 만든다.
public static void main(String[] args)
{
boolean a = true;
boolean b = false;
boolean c = !b;
System.out.println(a);
System.out.println(!a);
System.out.println(b);
System.out.println(c);
}
결과 값은
true
false
false
true
으로 콘솔창에 출력된다.
비교 연산자
비교 연산자의 결과는 비교의 참 / 거짓으로 반복문이나 조건문 제어시 사용된다.
public static void main(String[] args)
{
int a = 10;
int b = 20;
int c = 30;
System.out.println(a<b);
System.out.println(a>b);
System.out.println(a+b <= c);
System.out.println(a+b >= c);
}
결과값은
true
false
true
true
으로 콘솔창에 출력된다.
등가비교 연산자의 결과는 양변의 일치여부에 따라 참 / 거짓으로 반환된다.
public static void main(String[] args)
{
double a = 3.14;
double b = 5.14;
System.out.println(a==b);
System.out.println(a!=b);
String c1 = "Hello Java";
System.out.println(c1.equals("Hello Java"));
System.out.println(c1.equals("HELLO JAVA"));
int x = 33;
System.out.println(x%3==1&& x+10>45);
}
결과값은
false
true
true
false
false
으로 콘솔창에 출력된다.
논리 연산자
논리연산자는 여러가지 조건을 동시에 검사할 때 사용하는 연산자이다.
즉 비교연산이 두번 일어난다.
종류 | 연산자 | 사용 예시 | 설명 |
AND (*) | && | a&&a | a와 b가 모두 참 |
OR (+) | || | a||b | a와 b중 하나라도 참 |
NOT | ! | !a | a가 거짓이면 참 a가 참이면 거짓 |
public static void main(String[] args) {
int a = 10;
System.out.println(5<a&&a<15);
System.out.println(5<a&&a%2==0);
a = 4;
System.out.println(5<a&&a<15);
System.out.println(5<a&&a%2==0);
}
결과는
true
true
false
false
으로 콘솔창에 출력된다.
결과값을 계산으로 확인하는 방법은 해당 식에 참이면 1 거짓이면 0을 넣고 논리연산자가 AND면 곱하고
OR이면 더해서 나온 값이 양수면 참 0이면 거짓이다.
위의 코드를 예로 들면 int a = 10 일때 5<a (참이므로 1) && (AND는 *) a<15 (참이므로 1)
1*1=1 이므로 양수가 나오고 참인것을 알 수 있다.
대입 연산자
대입연산자는 산술연산자를 축약하여 작성한 것이다.
public static void main(String[] args)
{
int a = 3;
int b = 5;
b=a;
System.out.println(b);
a+=1; // a = a + 1
System.out.println(a);
a/=2; // a = a / 2
System.out.println(a);
a*=a; // a = a * a
System.out.println(a);
}
결과는
3
4
2
4
으로 콘솔창에 출력된다.