연산자(Operator)와 연산자 우선순위 <대입, 부호, 산술, 복합 대입, 증감, 관계, 논리, 조건, 비트 연산자>

Yeppi's 개발 일기·2022년 4월 28일
0

JAVA

목록 보기
6/27
post-thumbnail

1. 항과 연산자 개념

  • 항(operand) : 연산에 사용되는 값
  • 연산자(operator) : 항을 이용하여 연산하는 기호


2. 대입 연산자

왼쪽 변수 = 오른쪽 변수(또는 식, 값)

  • 변수에 다른 변수나 값을 대입

  • 우선 순위가 가장 낮은 연산자



3. 부호 연산자 = 단항 연산자

  • 변수의 부호를 유지 하거나(+) 바꿈(-)

  • 실제 변수의 부호가 변하려면 대입 연산자를 사용해야 함



4. 산술 연산자 = 사칙 연산자

+ - * / %

연산자기능
+더하기4+2 → 6
-빼기4-2 → 2
*곱하기4*2 → 8
/나누기 몫4/2 → 2
%나머지4/2 → 0
  • 자바에서 ‘+’ 연산자 : 산술 연산자 또는 문자열과 문자열을 연결하는 연산자로도 사용


5. 복합 대입 연산자

num1 += 2 → num1 = num1 + 2

연산자기능
+=더해서 왼쪽 항에 대입num1 += 2 → num1 = num1 + 2
-=빼서 왼쪽 항에 대입num1 -= 2 → num1 = num1 - 2
*=곱해서 왼쪽 항에 대입num1 *= 2 → num1 = num1 * 2
/=나눈 몫을 왼쪽 항에 대입num1 /= 2 → num1 = num1 / 2
%=나머지를 왼쪽 항에 대입num1 %= 2 → num1 = num1 % 2
<<=왼쪽으로 이동하고 왼쪽 항에 대입-
>>=오른쪽으로 이동하고 왼쪽 항에 대입-
>>>=오른쪽으로 이동하고 왼쪽 항에 대입-
&=& 비트 연산 후 왼쪽 항에 대입-
!=! 비트 연산 후 왼쪽 항에 대입-
^=^ 비트 연산 후 왼쪽 항에 대입-
  • 대입 연산자와 다른 연산자가 함께 쓰임


6. 증가, 감소 연산자

증가 ++ 감소 --

  • 단항 연산자

  • 변수의 값을 1 더하거나 1 뺄때 사용

  • 연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐

  • 문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함


📄 예

  • 증가 연산자
a = ++num // num값 1 증가 후, val 변수에 대입
a = num++ // val 변수에 대입 후, num값 1 증가
  • 감소 연산자
a = --num // num값 1 감소 후, val 변수에 대입
a = num-- // val 변수에 대입 후, num값 1 감소


7. 관계 연산자 = 비교 연산자 = 이항 연산자

> < >= <= == !=

연산자기능
>왼쪽항이 크면 참, 아니면 거짓num > 1
<왼쪽항이 작으면 참, 아니면 거짓num < 1
>=왼쪽항이 크거나 같으면 참, 아니면 거짓num >= 1
<=왼쪽항이 작거나 같으면 참, 아니면 거짓num <= 1
==왼쪽항과 오른쪽항이 같으면 참, 아니면 거짓num == 1
!=두 항이 다르면 참, 아니면 거짓num != 1
  • 연산의 결과가 true (참), false (거짓)으로 반환

  • 조건문, 반복문의 조건식으로 많이 사용



8. 논리 연산자

AND &&, OR ||, NOT !

연산자기능
논리곱 AND모두 참일 때, 결과 값이 참
논리합 OR하나의 항만 창이면, 결과 값이 참
부정 NOT참인 경우 거짓, 거짓인 경우 참
  • 관계 연산자와 혼합하여 많이 사용 됨

  • 연산의 결과가 true (참), false (거짓)으로 반환 됨


📄 예

		int num1 = 10;
		int num2 = 20;

  • 논리 곱 &&
		boolean flag = (num1 > 0) && (num2 > 0);
		System.out.println(flag); // true
		
		flag = (num1 < 0) && (num2 > 0);
		System.out.println(flag); // false
  • 논리 합 ||
		flag = (num1 > 0) || (num2 > 0);
		System.out.println(flag); // true
		
		flag = (num1 < 0) || (num2 > 0);
		System.out.println(flag); // true
  • 부정 !
		flag = !(num1 > 0);
		System.out.println(flag); // false    

🧐 논리 연산에서 모든 항이 실행되지 않는 경우 - 단락 회로 평가

  • 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
    • 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
  • 논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
    • 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음


9. 조건 연산자 = 삼항 연산자

조건식 > 결과1 : 결과2

연산자기능
조건식 > 결과1 : 결과2조건식 참이면 결과1, 거짓이면 결과2
  • 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨

  • if (조건문)을 간단히 표현할 때 사용 할 수 있음


📄 예

		int Score = 80;
		System.out.println(Score > 50 ? "합격" : "불합격"); // 합격


10. 비트 연산자

~ & | ^ << >> >>>

연산자기능
~비트의 반전(1의 보수)a = ~a;
&AND1&1 → 1
OR0 l 0 → 0
^XOR두 비트 서로 다른 경우 1 반환
<<왼쪽 시프트a<<2
>>오른쪽 시프트a>>2
>>>오른쪽 시프트>> 동일한 연산
채워지는 비트가 부호와 상관 없이 0
  • 대입연산자와 다른 연산자가 함께 쓰임

📄 예

		int num1 = 5;  	// 00000101
		int num2 = 10; 	// 00001010
  • AND, OR, XOR
		System.out.println(num1 | num2); // 15
		System.out.println(num1 & num2); // 0
		System.out.println(num1 ^ num2); // 15
		System.out.println(~num1); // -6
  • Shift
		System.out.println(num1 << 2); // 20
		System.out.println(num1); // 5
		System.out.println(num1 <<= 2); // 20
		System.out.println(num1); // 20

🧐 용어 정리

  • 마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때

  • 비트 켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
    ex. & 00001111 하위 4비트 중 1인 비트만 꺼내기

  • 비트 끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
    ex. | 11110000 하위 4비트 중 0 인 비트만 0으로 만들기

  • 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때



연산자 우선순위

💡 연산자는 자주 많이 사용하므로 기본적으로 알아두자

profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글