연산자

Minuuu·2022년 12월 25일
0

Java

목록 보기
6/18

연산을 수행하는 기호

연산자와 피연산자

연산자(operator) 연산을 수행하는 기호(+, -, *, /)
피연산자(operand) 연산자의 작업 대상(변수, 상수, 리터럴, 수식)
x+3 --> x, 3 : 피연산자, + : 연산자

연산자의 종류

연산자의 우선 순위

  1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다.
  2. 단항(1) > 이항(2) > 삼항(3). 단항 연산자의 우선순위가 이항 연산자보다 높다.
  3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽

산술 변환 규칙

  • 이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하므로 타입을 일치시켜야한다
    1. 두 피연산자의 타입을 같게 일치시킨다
      long + int = long + long
      float + int = float + float
    2. 피연산자의 타입이 int보다 작은 타입이면 int로 변환
      byte + short = int + int
      char + short = int + int

1. 단항 연산자

증감연산자 ++ --

증가 연산자(++) 피연산자의 값 1 증가
감소 연산자(--) 피연산자의 값 1 감소

일반적으로 단항연산자는 피연산자 왼쪽에 위치하지만 증가연산자는 양쪽 모두 가능
왼쪽이라면 전위형, 오른쪽이라면 후위형이라고 한다

전위형 : 값이 참조되기 전에 증가 j = ++i;
후위형 : 값이 참조된 후에 증가

전위형 후위형 차이점

int i = 5, j = 5;
System.out.println(i++); // 5
System.out.println(++j); // 6
System.out.println(i, j); // i = 6, j = 6

위와 같이 전위형은 참조 전에 값이 증가하고 후위형은 참조된 후에 값이 증가한다

부호연산자 +, -

피연산자의 부호를 반대로 변경한 값 반환 (양수 > 음수, 음수 > 양수)
+는 사실 쓸 일이 없으며 -만 주로 쓰인다

int i = -10;
i = +i;
System.out.println(i); // -10

i = -10;
i = -i;
System.out.println(i); // 10

2. 산술 연산자

사칙연산자 + - * / %

프로그래밍에서 가장 많이 사용되는 연산자
위 순서대로 더하기, 빼기, 곱하기, 나누기, 나머지
곱셈, 나눗셈이 우선순위가 높고 그다음이 덧셈 뺄셈


3. 비교 연산자

대소비교 연산자 <, >, <=, >=

참이면 true 거짓이면 false를 결과로 반환한다

> : 좌변 값이 크면 true, 아니면 false
< : 좌변 값이 작으면 true, 아니면 false
>= : 좌변 값이 크거나 같으면 true, 아니면 false
<= : 좌변 값이 작거나 같으면 true, 아니면 false

등가 비교 연산자 ==, !=

== : 두 값이 같으면 true, 아니면 false
!= : 두 값이 다르면 true, 아니면 false

두 문자열의 비교

  • 문자열을 비교할 때는 비교 연산자 '==' 대신 equals()라는 메서드를 사용해야 한다.
  • 비교연산자는 두 문자열이 완전히 같은 것인지 비교할 뿐이므로, 문자열의 내용이 같은지 비교하기 위해서는 equals()를 사용해야한다
  • 그 이유는 문자열은 String객체이기에 서로 다른 객체이기 때문
    만일 대소문자 구별하지않고 비교하고 싶다면 equals() 대신 equalsIgnoreCase()를 사용

4. 논리 연산자

논리연산자 && || !

||(OR결합) 피연산 중 어느 한 쪽만 true이면 true를 결과로 얻는다
&&(AND결합) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다

비트연산자 & | ^ ~ << >>

| (OR연산자) 피 연산자 중 한 쪽의 값이 1이면 1을 결과로 얻는다, 그 외는 0
& (AND연산자) 피 연산자 양 쪽의 값이 1이면 1을 결과로 얻는다, 그 외는 0
^ (XOR 연산자) 피 연산자의 값이 서로 다를 때만 1을 얻는다, 같으면 0
~ (비트 전환 연산자) 1이면 0, 0이면 1로 바꾼다
<<, >> (쉬프트 연산자) 피연산자의 각 자리를 오른쪽>>, 왼쪽 <<으로 이동

  • ex) 8 << 2는 왼쪽 피연산자 10진수의 8의 2진수를 왼쪽으로 2자리 이동
  • 10진수의 8은 00001000 을 왼쪽으로 2자리 이동하면 00100이 되고 빈자리는 0으로 채워
  • 00100000이 된다

그 외 연산자

삼항 연산자 ?:

조건식 ? 식1 : 식2
조건식이 참이라면 식1, 거짓이라면 식2

복합 대입 연산자

i += 3 -> i = i + 3;
i == 3 -> i = i = 3;
i *= 3 -> i = i * 3;


느낀점

연산자는 프로그래밍의 기본이고 비트연산자 부분은 사실 잘 쓸 기회가 없었는데 다시한번 정리하면서 진수의 개념을 더욱 더 다질 수 있어서 좋았다
그리고 연산자의 우선순위는 사실 자동으로 해주다보니 그냥 당연하듯이 사용했는데
이번 정리를 통해 다시 한번 짚어볼 수 있는 기회가 좋았다 :)

profile
꾸준히 한걸음씩 나아가려고 하는 학부생입니다 😄

0개의 댓글