Java04_연산자

2 minute read



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를 반환하게 할 수 있다.
    • (조건) ? a : b 를 기억하자.

int a = 30; 
int b = 20; 
System.out.println((a>b)? a : b); // 30