[Java] 연산자

SANG JONG CHOI·2022년 10월 28일
0

Java

목록 보기
4/28

연산이란? 데이터를 처리하여 결과를 산출하는 것

  • 연산자 (Operators)

  • 연산에 사용되는 표시나 기호 (+, -, *, /, %, =, ….)

  • 피연산자 (Operand)

  • 연산 대상이 되는 데이터 (리터럴, 변수) : a + 10

  • 연산식 (Expressions)

  • 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

연산자의 종류

image-20220618212554037

연산의 방향과 우선 순위

image-20220618212624900

연산자의 우선 순위

  • 괄호()의 우선 순위가 제일 높다
  • 단항, 이항, 삼항 연산자 순
  • 산술, 비교, 논리, 대입 연산자 순
  • 대입 연산자 맨 마지막에 수행
  • 오른쪽에 있는 식을 다 처리하고 마지막에 왼쪽의 변수에 저장
  • 단항과 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽 (→)
  • 복잡한 연산식에는 괄호()를 사용하여 우선순위 정해준다

단항 연산자

  • 피연산자가 1개인 연산자
  • 부호 연산자 : +, - (양수 및 음수 표현)
  • 증감 연산자 : ++, --
  • 논리 부정 연산자 : !
  • 비트 반전 연산자 : ~

증감 연산자

  • ++, --

  • 변수의 값을 1증가 시키거나(++) 1 감소(--) 시키는 연산자

  • 연산식에 증감 연산자만 있는 경우에는 변수의 앞이나 뒤 어디든 위치에도 결과 동일

image-20220618213122903

위치 주의!!

  • 변수의 값을 먼저 사용하고 나중에 증가할 것인지
  • 먼저 증가해서 증가된 값을 사용할 것인지 주의
image-20220618213132719
  • 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리
image-20220618213206793
논리 부정 연산자 : !
  • boolean 타입에만 사용 가능
비트 반전 연산자 : ~
  • 비트값을 반전 (0을 1로, 1을 0으로) 시킴

이항 연산자

  • 피연산자가 2개인 연산자
  • 산술 연산자 : +, -, *, /, %
  • 문자열 연결 연산자 : +
  • 비교 연산자 : <, <=, >, >=, ==, !=
  • 논리 연산자 : &&, ||, &, |, ^, !
  • 비트 논리 연산자 : &, |, ^, ~
  • 비트 이동 연산자 : <<, >>, >>>
  • 대입 연산자 : =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=

산술 연산자 : +, -, *, /, %

  • boolean 타입을 제외한 모든 기본 타입에 사용 가능
image-20220618213257596

소수점 이하 자릿수 조정

DecimalFormat 클래스 사용

df.format(변수); //df.format(average)

import java.text.DecimalFormat

DecimalFormat df = new DecimalFormat(“0.00”); 
DecimalFormat df = new DecimalFormat(“#,###”); 
DecimalFormat df = new DecimalFormat(“#,###.00”); 

형식화된 출력 - printf()

  • 지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능
  • 지시자는 값을 어떻게 출력할 것인지 지정
image-20220618213607537

산술 연산자 사용 시 주의!

  1. 결과값 산출할 때 Overflow 주의

    • 연산 결과값이 너무 커서

    • 저장될 수 있는 범위를 초과한 경우 Overflow 발생

    • 쓰레기 값(잘못된 값) 출력

  1. NaN과 Infinity 연산은 주의
  • / 연산 또는 % 연산 시 주의

  • / 연산

  • 정수를 0으로 나눌 경우 예외 발생

  • 실수를 0.0으로 나눌 경우 Infinity 출력

  • isInfinite() 메소드 사용해서 확인

  • % 연산

  • 정수를 0으로 나눌 경우 예외 발생

  • 실수 0.0으로 나눌 경우 NaN 출력

  • isNaN() 메소드 사용해서 확인

비교 연산자

대소 : <, <=, >, >=
동등 : ==(같다), !=(같지 않다)
비교 결과 boolean 타입인 true/false
  • 동등 비교 연산자는 모든 타입에 사용
  • 크기 비교 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용
  • 문자열 비교에는 == 사용하지 않고 equals() 메소드 사용
  • 흐름 제어문인 조건문과 반복문에서 주로 이용
  • 실행 흐름을 제어할 때 사용

논리 연산자 : &&, ||, &, |, ^, !

image-20220618213350231

비트 연산자

  • 비트(bit) 단위로 연산하므로 0과 1이 피연산자

  • 0과 1로 표현이 가능한 정수 타입만 비트 연산 가능

  • 실수 타입인 float과 double은 비트 연산 불가

    비트 연산자 종류

  • 비트 논리 연산자 : &, |, ^, ~

  • 비트 이동 연산자 (쉬프트 연산자) : <<, >>, >>>
    비트 논리 연산자 : &, |, ^, ~

  • 피연산자 정수 타입일 경우에는 비트 논리 연산자로 사용

  • (피 연산자 boolean 타입일 경우에는 일반 논리 연산자)

비트 이동 연산자

  • <<, >>, >>>

  • 정수 데이터를 비트를 좌측 또는 우측으로 밀어서 이동시키는 연산 수행

image-20220618214432037
  • 단순히 비트값만 이동하기 때문에 연산 속도가 빠르고

  • CPU 부담을 줄일 수 있기 때문

쉬프트 연산 계산법
<< : 곱셈 >> : 나눗셈
a << b : a * 2^b
3 << 2  →  3 * 2^2 = 12

a >> b : a / 2^b
16 >> 3 → 16 / 2^3 = 2

대입 연산자

  • =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=
  • 오른쪽 피연산자의 값을 좌측 피연산자인 변수에 저장
  • 모든 연산자들 중 가장 낮은 연산 순위 (제일 마지막에 수행)
  • 정해진 연산을 수행한 후 결과를 변수에 저장
  • a = a + 10; → a += 10;
  • (a에 10을 더한 후 다시 10에 저장)

삼항 연산자 (항이 3개 : 피연산 3개)

  • 3개의 피연산자를 필요로 하는 연산자
  • 조건식 ? 값 또는 연산식 : 값 또는 연산식
  • 앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 (조건 연산식)
profile
No error, No gain

0개의 댓글