산술 연산자

양성빈·2022년 6월 4일

참고
자바의 정석

산술 연산자

산술 연산자에는 사칙 연산자 (+, -, * , /)와 나머지 연산자(%)가 있다.

사칙 연산자 + - * /

  • 사칙 연산자는 프로그래밍에서 가장 많이 사용하는 연산자이다.
  • 곱셈, 나눗셈, 나머지 연산자는 덧셈, 뺌셈 연산자보다 우선순위가 높다.
  • 피연산자가 정수일 때, 나누는 수로 0을 사용할 수 없다.
    사용하게 된다면, 실행 시에 에러가 발생한다.
System.out.println(3/0); // ERROR: ArithemeticException
System.out.println(3/0.0) // Infinity 출력
xyx/yx%y
유한수±0.0±InfinityNaN
유한수±Infinity±0.0x
±0.0±0.0NaNNaN
±Infinity유한수±InfinityNaN
±Infinity±InfinityNaNNaN

NaN은 'Not a Number'를 줄인 것으로 숫자가 아니라는 것을 의미한다.

그리고 사칙연산자를 하면서 주의를 해야할 것이 해당 타입의 범위를 넘어서는지 그것을 주의하자! 연산을 하는 도중에 순서위치에 따라 오버플로우나 값의 손실이 발생하여 값이 예상과 다르게 나올수도 있기때문이다.

  • 또한 사칙연산자는 숫자뿐만 아니라 문자로도 가능하다. 왜냐하면 문자형이 실제로 저장될때는 유니코드로 저장되기 때문이다.
  • 문자형 타입으로 연산을 할 때는 아래와 같이 주의해야 할 것이 있다.
char ch = 'a';
ch = ch + 1; // ERROR: 연산결과가 정수형인데 문자형 타입으로 저장하기 때문이다.
ch++; // SUCCESS: 단항연산자로 증가는 가능하다.
char ch2 = 'a' + 1; // 리터럴간 연산은 형변환 없이 가능하다.
  • 위 처럼 상수 또는 리터럴 간의 연산은 실행과정동안 변하는 값이 아니기 때문에 컴파일 시 컴파일러가 계산해서 그 결과로 대체함으로써 효율적으로 만든다.
  • 또한 실수연산을 할때 반올림을 쉽게 하는 방법이 없을까라는 생각이 있을것이다. 바로 아래와 같이 메소드로 처리하면 보다 원활한 개발이 가능할것이다.
Math.round(3.14) // OUTPUT: 4

나머지 연산자 %

  • 나머지 연산자는 왼쪽의 피연산자를 오른쪽 피연산자로 나누고 난 나머지 값을 결과로 반환하는 연산자
  • 주로 짝수 혹은 홀수 판별할 때 많이 사용된다.
  • 나머지 연산자는 나누는 수로 음수도 허용된다. 그러나 부호는 무시되므로, 결과는 음수의 절대값으로 나눈 나머지와 결과가 같다.
profile
모든 것을 즐길줄 아는 개발자입니다!

0개의 댓글