☕JAVA/🔎 공부 [JAVA]

[JAVA] 연산자 / 연산자 우선순위

디카페인라떼 2022. 8. 6. 16:17

참고 블로그 + 프로그래머스 자바입문강의

 

연산자 사용법 설명
산술 연산자
++ ++a, a++ 값을 하나 증가시킵니다.(전위, 후위 연산자) 
-- --a, a-- 값을 하나 감소시킵니다.(전위, 후위 연산자)
+ a + b 더하기
- a - b 빼기
* a * b 곱하기
/ a / b 나누기
% a % b 나머지
관계 연산자 (비교연산자) *결과는 boolean
> a > b a가 b보타 크면 true를 반환, 작거나 같으면 false를 반환
>= a >= b a가 b보다 크거나 같으면 true를 반환, 작으면 false를 반환
< a < b a가 b보다 작으면 true를 반환, 크거나 같으면 false를 반환
<= a <= b a가 b보다 작거나 같으면 true를 반환, 크면 false를 반환
== a == b a와 b가 같으면 true를 반환, 다르면 false를 반환
!= a != b a와 b가 다르면 true를 반환, 같으면 true를 반환
(비트 연산자)
<< a << b 정수 a의 2진수 값을 왼쪽으로 b만큼 이동시키고 나머지는 0으로 채움
>> a >> b 정수 a의 2진수 값을 오른쪽으로 b만큼 이동시키고 나머지를 양수는 0으로 음수는 1로 채움
& a & b a와 b의 and 계산 ex) 4(0100) & 5(0101) = 4(0100)
| a | b a와 b의 or 계산 ex) 4(0100) | 5(0101) = 5(0101)
^ a ^ b a와 b의 xor 계산 ex) 4(0100) ^ 5(0101) = 1(0001)
논리 연산자
&& a && b AND 연산자, 즉 a와 b가 boolean 값으로 정의되어 있고 true && true라면 true, true && false 라면 false의 결과를 나타낸다.
|| a || b OR 연산자, 즉 a와 b가 boolean 값으로 정의되어 있고 true || true 라면 true, true || fasle 라면 true의 결과를 나타낸다.
대입 연산자
+= a += b a = a + b;와 같은 의미 *복합대입 연산자
-= a -= b a = a - b;와 같은 의미 *복합대입 연산자
*= a *= b a = a * b;와 같은 의미
/= a /= b a = a / b;와 같은 의미
%= a %= b a = a % b;와 같은 의미
&= a &= b a = a & b;와 같은 의미
|= a |= b a = a | b;와 같은 의미
^= a ^= b a = a ^ b;와 같은 의미
<<= a <<= b a = a << b;와 같은 의미
>>= a >>= b a = a >> b;와 같은 의미
삼항 연산자
? a = b == c ? d : e b와 c가 같으면 a변수에 d의 값을 넣고 b와 c가 다르면 e의 값을 입력

출처: https://nowonbun.tistory.com/293 [명월 일지:티스토리]

 


논리연산자 

출처 :https://school.programmers.co.kr/learn/courses/5/lessons/144

public static void main(String[] args) {
		boolean b1 = true;
		boolean b2 = false;
		boolean b3 = true;
		
		System.out.println(b1 && b2);//b2=false이므로 false출력
		System.out.println(b1 && b3);//둘다 true이므로 true출력
		System.out.println(b1 || b2);//b1=true.하나만true면 true
		System.out.println(b1 || b3);//서로 같으므로 false
		System.out.println(b2 || b2);//같은 값으로 false
        
        
        System.out.println(b1 ^ b3);//배타적 논리합: 서로다른값인 경우에만true-> false
		System.out.println(b1 ^ b2);//서로다른값 -> true
		System.out.println(!b1);//논리부정 : 연산자의 논리값을 바꿈. false 출력

❗❗배타적 논리합? 생각보다 헷갈리므로 주의!!

 


삼항연산자

  • 조건식 ? 피연산자1 : 피연산자2
    • => int a = (조건문)?true일때의 값 : false일때의 값
    • 조건식의 연산결과가 true 이면, 결과는 피연산자 1이고, 조건식의 연산결과가 false 이면 결과는 피연산자2
    • 피연산자1, 피연산자2 에는 주로 값이 오지만, 경우에 따라 연산식이 올 수 있다.
int b1 = (5>4) ? 50 : 40;
//조건식이 true이므로 b1은 50이 된다.
public class Main {
    public static void main(String[] args) {
        int a = (5 < 4) ? 50 : 40;
        System.out.println(a);
    }
}

❗깔끔해지긴 하지만 헷갈릴수 있으므로 자주 중복으로 사용하는 일은 자제 필요!

삼항 연산자가 익숙하지 않다면, if문으로 바꾸어 이용해도 좋다.

 


연산자 우선순위

출처 : https://school.programmers.co.kr/learn/courses/5/lessons/116

int a = 5; 
System.out.println(++a - 5); 
//전위연산자인 ++이 먼저 계산
//즉 5(a)+1-5 = 1 출력
 int a = 5; 
System.out.println(a++ - 5); 
//++이 후위연산자이므로  5(a)-5 한 후에 a++ 실행
System.out.println(a); 
//마지막에 a++이 실행 되어 a+1 = 6

 ❗전위연산자와 후위 연산자가 조금 헷갈리니 주의하자!