본문 바로가기

JAVA

연산자

연산자와 피연산자

  • 연산자 : 계산의 목적이 되는 것. 더하기, 빼기, 곱하기, 나누기 등
  • 피연산자 : 계산할 때 계산의 대상이 되는 것. 숫자

연산자의 종류

산술 연산자

사칙 연산 및 비트 연산

사칙 연산 : + (덧셈) - (뺄셈) * (곱셈) / (나눗셈, 몫) % (나머지)

 우선순위 연산 적용되어 곱셈, 나눗셈이 덧셈, 뺄셈보다 먼저 수행됨

비트 연산 : << (왼쪽으로 자리수 옮기기) >> (오른쪽으로 자리수 옮기기)

비교 연산자

값의 크고 작음을 비교하거나 같고 다름을 비교하여 참(true)/거짓(false) 값인 boolean 값을 출력한다.

> (크다) < (작다) >= (크거나 같다) <= (작거나 같다) == (같다) != (다르다)

논리 연산자

비교 연산의 결과로 받을 수 있는 boolean 값을 연결하는 연산자

조건을 연결했을 때 boolean 값들을 조합하여 참, 거짓 값인 boolean 값을 출력한다.

참(true), 거짓(false) 값인 boolean 값을 출력한다.

&& (AND, 피연산자 모두 참) || (OR, 피연산자 둘 중 하나라도 참) ! (피연산자의 반대 boolean 값)

대입 연산자

변수를 바로 연산해서 그 자리에서 저장하는 연산자

기본 연산자 =, 다른 연산과 함께 쓰는 복합 대입 연산자 +=, -=, *= 등

+=는 ++과 동일함 (피연산자에 1 더해주기), -=는 --와 동일함 (피연산자에 1 빼주기)

  • ++{피연산자} : 연산 전에 피연산자에 1을 더함
  • {피연산자}++ : 연산 후에 피연산자에 1을 더함
  • --{피연산자} : 연산 전에 피연산자에 1을 뺌
  • {피연산자}-- : 연산 후에 피연산자에 1을 뺌
public class Main {
	public static void main(String[] args) {
		int a = 3;
		int b = 4;
		int val = ++a + b--; // a 는 연산전에 +1, b 는 연산후에 -1

		System.out.println(a); // 4
		System.out.println(b); // 3
		System.out.println(val); // 8

		// 4 + 3 이 7이 나오는 이유
		// a 는 val 연산전에 ++ 가 수행되어 4로 연산되었지만
		// b 는 val 연산후에 -- 가 수행되어 기존값이 4으로 연산된 후 -- 가 수행됨

기타 연산자

형변환 연산자

괄호 안에 변환할 타입을 넣으면 피연산자의 타입이 변경된다.

int intNumber = 10 + (int)11.5; // 10 + 11

 

삼항 연산자

비교 연산 결과에 따라 응답할 값을 직접 지정할 수 있는 연산자

삼항 연산자는 3가지 피연산자가 존재하고, 삼항연산자라고 한다.

(조건) ? (참결과) : (거짓결과)

int x = 1;
int y = 2;

boolean b = (x == y) ? true : false;
System.out.println(b); // false

int max = (x > y) ? x : y;
System.out.println(max); // 2

 

instance of 연산자

클래스와 관련됨. 피연산자가 조건에 명시된 클래스의 객체인지 비교하여 참/거짓을 응답해주는 연산자

(객체명) instance of (클래스명)

연산자 우선순위

산술 > 비교 > 논리 > 대입

연산자 여러개가 함께 있는 연산을 계산할 때는 우선순위가 있다.

우선순위에 따라 최종적인 응답값이 결정된다.

괄호로 감싸주면 괄호 안의 연산이 최우선순위로 계산된다.

산술변환

연산 전에 피연산자의 타입을 일치시키는 것

(둘중에 저장공간 크기가 더 큰 타입으로 일치시킴)

변수 여러개를 연산했을 때 결과값은 피연산자 중 표현 범위가 가장 큰 변수 타입을 가지게 된다.

예) 피연산자 타입이 float보다 작은 long, int, short 타입이면 float로 변환

 

비트 연산

Bit의 자리수를 옮기는 것을 비트 연산이라고 한다.

<< 왼쪽으로 자리수 옮기기, >> 오른쪽으로 자리수 옮기기

0, 1은 2진수 값이기 때문에 자리수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈 연산되는 것과 같다.

자리수를 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈 연산되는 것과 같다.

// 비트 연산
// 참고, 3의 이진수값은 11(2) 입니다. 12의 이진수값은 1100(2) 입니다.

System.out.println(3 << 2); 
// 3의 이진수값인 11(2) 에서 왼쪽으로 2번 옮겨져서 1100(2) 인 12값이 됩니다.

System.out.println(3 >> 1); 
// 3의 이진수값인 11(2) 에서 오른쪽으로 1번 옮겨져서 1(2) 인 1 값이 됩니다.

 

'JAVA' 카테고리의 다른 글

반복문  (0) 2023.04.04
조건문  (0) 2023.04.04
형변환  (0) 2023.04.03
숫자와 문자  (0) 2023.04.03
변수와 상수  (0) 2023.04.03