Java의 연산자
- 연산자에 대해 정리해보았다.
- 연산자에는
- 사칙연산, 증감연산자, 비교연산자, 논리연산자 등이 있다.
사칙연산자
- 우리가 흔히 알고있는 더하기, 빼기, 곱하기 나누기 등이 있다.
연산자 |
설명 |
연산자 |
설명 |
+ |
두 수를 더한다. |
/ |
두 수를 나눈다.(정수는 몫을 반환) |
- |
두 수를 뺸다. |
% |
나머지를 반환 |
* |
두 수를 곱한다. |
|
|
증감연산자
- 변수를 1씩 증가 또는 감소시키는 것을 단항으로 표현하는 방법.
- 대입연산자 ( = ) 없이도 자신의 값이 바뀐다.
int n = 10;
n = n+1;
n += 1; // 복합연산자. n = n+1과 같은의미.(더하고 변수에 대입한다)
- 보통 파이썬에서는 위처럼 n += 1의 형식으로 많이 써주었지만 자바에서는 증감연산자를 사용할 수 있다.
++n; // 11 : 전위증감연산자 - n에 1을 더한 값을 출력한다. 속도 빠름.
n++; // 10 : 후위증감연산자 - n을 출력한 후 1을 더한다. 전위보다 느리다.
- 그렇다면 대입연산자 식과 증감연산자 식의 차이는 무엇일까?
- 증감연산자를 사용시 아래처럼 코드를 짜면 안 된다고 하니 주의하자
System.out.println(++n + ++n);
비교연산자
- 결과가 논리형으로 나오며, 논리연산자와 함께 사용
연산자 |
설명 |
a > b |
a는 b보다 크다. |
a <= b |
a는 b보다 같거나 작다. |
a >= b |
a는 b보다 같거나 크다. |
a == b |
a는 b와 같다. |
a < b |
a는 b보다 작다. |
a != b |
a는 b가 아니다. |
- 보통 변수가 왼쪽에 오도록 한다. ( 0 <= a 보다는 a >= 0의 형식이 되도록 한다.)
논리연산자
- 교환법칙이 성립하지 않으므로 A와 B의 순서가 중요하다.
- 계산 우선순위는 and(&&)가 or(∥)보다 높다.
연산자 |
설명 |
연산자 |
설명 |
A && B |
and A와 B모두 만족하면 true |
A ∥ B |
or A또는 B중 하나만 만족하면 true |
예제 1
int a=1, b=-1, c=0;
boolean bool = ++a > 0 && ++b > 0 && ++c > 0;
// a = 2, b = 0, c = 0
//c는 뭔지몰라서 연산할 수 없으므로 c는 0이다.
// 풀이방법
// (++a > 0 && ++b > 0) -> &&는 앞이 참이면 뒤도 확인, (T && F) = F
// F && ++c -> 앞이 F이므로 뒤는 볼필요도 없음.
System.out.println("bool : " + bool); // false
System.out.println("a :" + a + ", b : " + b + ", c : " + c);
예제 2
int a2=1, b2 = -1, c2 = 0;
boolean bool2 = a2++ > 0 || b2++ > 0 || c2++ > 0;
// a = 1 , b = -1, c = 0
// 풀이방법
// a2++ > 0 || b2++ > 0 -> T
// T || c2++ > 0 -> T
System.out.println("bool2 : " + bool2); // true
System.out.println("a2 :" + a2 + ",b2 : " + b2 + ", c2 : " + c2);
예제 3
int a3=1, b3 = -1, c3 = 0;
boolean bool3 = a3++ > 0 || b3++ > 0 && c3++ > 0;
// a = 2, b = -1, c = 0
// b3++ > 0 && c3++ > 0 먼저 계산 -> F
// a3++ > 0 || F -> T
System.out.println("bool3 : " + bool3);
// true System.out.println("a3 :" + a3 + ", b3 : " + b3 + ", c3 : " + c3);
- 논리연산자를 응용하여 간단하게 true이면 a를 false이면 b를 반환하게 할 수 있다.
int a = 30;
int b = 20;
System.out.println((a>b)? a : b); // 30