Don't Panic
in Java ☕ 2분 읽기

[Java] java 연산자

목차

1. 자바의 연산자들 (1) - 대입, 부호, 산술, 복합 대입, 증감 연산자

항과 연산자

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

대입 연산자 (assignment operator)

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

부호 연산자

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

산술 연산자

  • 사칙 연산자

산술 연산자

  • %는 나머지를 구하는 연산자. 숫자 n의 나머지 범위는 0 ~ n-1이다.

복합 대입 연산자

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

복합 대입 연산자 1 복합 대입 연산자 2

증가, 감소 연산자

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

증감 연산자


2. 자바의 연산자들 (2) - 관계, 논리 연산자

관계 연산자

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

관계 연산자 종류

package ch12;

public class RealtionalTest {

	public static void main(String[] args) {

		int num1 = 5;
		int num2 = 3;

		boolean value = (num1 > num2);
		System.out.println(value);

		System.out.println(num1 < num2);
		System.out.println(num1 >= num2);
		System.out.println(num1 <= num2);
		System.out.println(num1 == num2);
		System.out.println(num1 != num2);
	}
}

관계 연산자 실행 결과

논리 연산자

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

논리 연산자 종류

package ch12;

public class LogicalTest {

	public static void main(String[] args) {

		int num1 = 10;
		int num2 = 20;

		boolean flag = (num1 > 0) && (num2 > 0);
		System.out.println(flag);

		flag = (num1 < 0) && (num2 > 0);
		System.out.println(flag);

		flag = (num1 > 0) || (num2 > 0);
		System.out.println(flag);

		flag = (num1 < 0) || (num2 > 0);
		System.out.println(flag);

		flag = !(num1 > 0);
		System.out.println(flag);
	}
}

논리 연산자 실행 결과

단락 회로 평가 (short circuit evaluation)

논리 연산에서 모든 항이 실행되지 않는 경우가 있습니다.

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

public class ShortCircuit {

	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);

		value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);
		System.out.println(value);
		System.out.println(num1);
		System.out.println(i);

	}
}

단락 회로 평가 실행 결과


3. 자바의 연산자들 (3) - 조건 연산자, 비트 연산자

조건 연산자

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

조건(삼항) 연산자

package ch13;

import java.util.Scanner;

public class ConditionTest {

	public static void main(String[] args) {

		int max;
		System.out.println("입력 받은 두 수중 큰 수를 출력하세요\n ");

		Scanner scanner = new Scanner(System.in);
		System.out.println("입력1:");
		int x = scanner.nextInt();
		System.out.println("입력2:");
		int y = scanner.nextInt();

		max = (x > y)? x : y;
		System.out.println(max);
	}
}

비트 연산자

비트 단위로 연산을 수행하며, 주요 용도는 다음과 같다.

용도설명
마스크특정 비트를 가리고 몇 개의 비트 값만 사용할 때
비트 켜기특정 비트들만 1로 설정하고 싶을 때 (예: & 00001111 — 하위 4비트 중 1인 비트만 꺼내기)
비트 끄기특정 비트들만 0으로 설정하고 싶을 때 (예: | 11110000 — 하위 4비트 중 0인 비트만 0으로 만들기)
비트 토글모든 비트를 0은 1로, 1은 0으로 바꾸고 싶을 때

비트 연산자 종류

package ch13;

public class BitTest {

	public static void main(String[] args) {

		int num1 = 5;  	// 00000101
		int num2 = 10; 	// 00001010

		System.out.println(num1 | num2);
		System.out.println(num1 & num2);
		System.out.println(num1 ^ num2);
		System.out.println(~num1);

		System.out.println(num1 << 2);
		System.out.println(num1);
		System.out.println(num1 <<= 2);
		System.out.println(num1);

	}
}

비트 연산자 실행 결과

연산자 우선순위

연산자 우선순위 표