java 산술연산자

Java & Android 2015. 8. 2. 21:53

사칙 연산자 : +, -, *, /

int형보다 크기가 작은 자료형은 int형으로 형변환 후에 연산을 수행하며
두개의 피연산자중에 자료형의 표현범위가 큰쪽에 맞춰서 형변환 후에 연산을 수행한다.
정수형 간의 나눗셈에서 0으로 나누는 것은 금지되어 있다(java.lang.ArithmeticException 발생).
실수형 간의 나눗셈에서 0으로 나누는 것은 Infinity로 처리된다.
0.0 / 0.0의 결과는 NaN(Not A Number)이다.

리터럴 간의 연산은 컴파일시 연산의 결과값을 컴파일 후의 코드에 적용한다.
'int sec = 60 * 60 * 24;' 의 컴파일 후 코드는 'int sec = 86400;' 이다.
단, 수식에 변수가 포함된 경우에는 컴파일러가 미리 계산할 수 없으므로 형변환에 주의해야 한다.


나머지 연산자 : %

boolean형을 제외하고 모든 기본형에 사용할 수 있다.
나머지 연산은 주로 짝수, 홀수, 배수 검사 등에 사용된다.
사칙연산과 마찬가지로 정수형은 0으로 연산하는 것은 예외가 발생하고
실수형은 NaN를 결과값으로 가진다.


쉬프트 연산자 : <<, >>, >>>

정수형 변수에만 사용 가능하다. 2진수로 표현했을 때 각 비트를 오른쪽, 왼쪽으로 이동(shift)한다.

  • x << n 은 x * 2의 n제곱의 결과와 같다.
  • x >> n 은 x / 2의 n제곱의 결과와 같다.
  • 이동하는 갯수 n이 자료형의 bit수 보다 크면 자료형의 bit수로 나눈 나머지만큼 이동한다.
  • 쉬프트 연산자를 제공하는 이유는 연산 속도가 빠르기 때문이다.
<<
왼쪽으로 이동시키면서 빈칸을 0으로 채운다.
>>
오른쪽으로 이동시키면서 부호를 유지하기 위해 양수는 0으로, 음수는 1로 채운다.
>>>
오른쪽으로 이동시키면서 부호와 상관없이 항상 0으로 채운다.

'Java & Android' 카테고리의 다른 글

java 논리연산자  (0) 2015.08.02
java 비교연산자  (0) 2015.08.02
java 단항 연산자  (0) 2015.08.02
java 메소드  (0) 2015.07.30
java 접근제어  (0) 2015.07.30
: