Java

[Java] 자바의 연산자들

인생은단짠단짠 2022. 9. 19. 17:29

 

피연산자는 숫자, 연산자는 부호입니다.

연산자들이 많이 있는데 간단히 종류들을 정리해 보고자 합니다.

 

항과 연산자

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

 

대입 연산자 (assignment operator)

  • 변수에 다른 변수나 값을 대입하는 연산자
  • 이항 연산자 중 우선 순위가 가장 낮은 연산자들
  • 왼쪽 변수 = 오른쪽 변수(또는 식, 값)

 

부호 연산자

  • 단항 연산자
  • 변수의 부호를 유지 하거나(+) 바꿈(-)
  • 실제 변수의 부호가 변하려면 대입 연산자를 사용해야 함

 

산술 연산자

사칙 연산자

% 나머지 구하는 연산자, 숫자 n 의 나머지 범위는 0 ~ n-1 입니다.

정수와 정수를 나누면 연산결과고 정수입니다.

하나를 실수로 바꿔야 결과도 실수가 나옵니다.

 

 

복합 대입 연산자

대입 연산자와 다른 연산자가 함께 쓰입니다.

 

증가, 감소 연산자

 

  • 단항 연산자
  • 변수의 값을 1 더하거나 1 뺄때 사용
  • 연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐
  • 문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함

 

++num: 이 statement가 끝나기 전에 증가합니다.

num++ : 이 statement가 끝난 후에 증가합니다.

 

 

예제

package ch11;

public class OperatorTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int gameScore = 150;
		int lastScore = gameScore++; //gameScore +=1; gameScore = gameScore+1;
		
		System.out.println(lastScore);
		System.out.println(gameScore);
	}

}

결과

150
151

 

 

관계 연산자

  • 이항 연산자
  • 연산의 결과가 true(참), false(거짓)으로 반환 됨, 비교연산자 라고도 함
  • 조건문, 반복문의 조건식으로 많이 사용 됨

 

논리 연산자

  • 관계 연산자와 혼합하여 많이 사용 됨
  • 연산의 결과가 true(참), false(거짓)으로 반환 됨

 

논리 연산에서 모든 항이 실행되지 않는 경우 

이를 단락 회로 평가 (short circuit evaluation)라고 합니다.

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

이를 잘 고려하여 코드를 작성해야 합니다. 의도대로 작동하지 않을 수 있기 때문입니다.

 

예제

package ch12;

public class LogicalTest {

	public static void main(String[] args) {
		
		int num1 = 10;
		int i = 2;
		
		boolean value = ( (num1 = num1 + 10) < 10 ) && ( (i = i + 2) < 10 );
		
		System.out.println(value);
		System.out.println(num1);
		System.out.println(i); //앞에 항이 false기 때문에 뒤쪽 항을 보지 않아서 값이 그대로임.
	}

}

결과

false
20
2

 

조건 연산자

  • 삼항 연산자
  • 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
  • if (조건문)을 간단히 표현할 때 사용 할 수 있음

 

비트 연산자

 

  • 대입연산자와 다른 연산자가 함께 쓰임
  • 마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때
  • 비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
    예) & 00001111 ( 하위 4비트 중 1인 비트만 꺼내기)
  • 비트끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
    예) | 11110000 ( 하위 4비트 중 0 인 비트만 0으로 만들기)
  • 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때

 

시프트 연산은 중요합니다. 속도가 훨신 빠르기 때문에 임베디드, 기계어 쪽에서 비트연산자가 많이 사용됩니다.

<< 는 *2 연산

>> 는 /2 연산 

예시

package ch13;

public class BitOperationTest {

	public static void main(String[] args) {

		int num1 = 5;
		int num2 = 10;
		
		System.out.println( num1 | num2 );
		System.out.println( num1 & num2 );
		System.out.println( num1 ^ num2 );
		System.out.println( ~num1 );
		
		System.out.println(num1 <<= 2); //2의 2승 만큼 x한 수를 저장.
		System.out.println(num1 >> 2); //2의 2승 만큼 /됨
	}

}

결과

15
0
15
-6
20
5

 

 

연산자 우선순위

연산자 우선순위가 있는데 딱히 중요하지 않습니다. 우선순위를 높이혀면 괄호를 치면 됩니다!

'Java' 카테고리의 다른 글

[Java] 참조 자료형 변수  (0) 2022.09.21
[Java] 객체 구현  (0) 2022.09.21
[Java] 제어문  (0) 2022.09.20
[Java] 자바프로그래밍이란  (0) 2022.09.19
[Java] 자료형과 변수  (1) 2022.09.19