IT 개발노트

연산자(Operator) 본문

기초튼튼/JAVA

연산자(Operator)

limsungju 2019. 5. 30. 09:21

1. 연산자(Operator)란?
- 연산자(Operator) : 어떠한 기능을 수행하는 기호(+,-,*,/ 등)

- 피연산자(Operand) : 연산자의 작업 대상(변수, 상수, 리터럴, 수식)

2. 연산자의 종류

3. 연산자의 우선순위
- 괄호의 우선순위가 제일 높다.
- 산술 > 비교 > 논리 > 대입
- 단항 > 이항 > 삼항
- 연산자의 연산 진행방향은 왼쪽에서 오른쪽(->)이다.
단, 단항, 대입 연산자만 오른쪽에서 왼쪽(<-)이다.

4. 증감연산자 - ++, --
증가연산자(++) : 피연산자의 값을 1 증가시킨다.
감소연산자(--) : 피연산자의 값으 1 감소시킨다.

전위형 j = ++i; // 값이 참조되기 전에 증가시킨다.
후위형 j = i++; // 값이 참조된 후에 증가시킨다.

5. 부호연산자(+,-)와 논리부정연산자(!)
부호연산자(+,-) : '+'는 피연산자에 1을 곱하고, '-'는 피연산자에 -1을 곱한다.

논리부정연산자(!) : true는 false로, false는 true로 피연산자가 boolean일 때만 사용가능

6. 비트전환연산자 - ~
- 정수를 2진수로 표현했을 때, 1을 0으로 0은 1로 바꾼다. 정수형에만 사용가능

7. 이항연산자의 특징
- 이항연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다.
-> int보다 크기가 작은 타입은 int로 변환한다. (byte, char, short -> int)
- 피연산자 중 표현범위가 큰 타입으로 형변환 한다.
-> byte + short -> int + int -> int
-> char + int -> int + int -> int
-> float + int -> float + float -> float
-> long + float -> float + float -> float
-> float + double -> double + double -> double

byte a = 10;
byte b = 20;
byte c = a + b; // 에러발생
-> byte + byte -> int + int -> int
-> byte c = (byte)(a + b); // 정상작동

int a = 1000000;
int b = 2000000;
long c = a * b; // 오버플로우 발생으로 인해 c는 -1454759936으로 저장된다.
-> long c = (long)a * b; // a나 b중 한곳을 형변환 해주고 연산하면 c는 2000000000000으로 저장된다.

long a = 1000000 * 1000000; // a는 -727379968 저장된다.
long b = 1000000 * 1000000L; // b는 1000000000000 저장된다.

int c = 1000000 * 1000000 / 1000000; // c는 -727
int d = 1000000 / 1000000 * 1000000; // d는 1000000

char c1 = 'a';
char c2 = c1 + 1; // 에러
-> char c2 = (char)(c1 + 1); // 정상작동

char c2 = ++c1; // 정상작동

int i = 'B' - 'A'; // char - char -> int - int -> 66 - 65 -> 1 저장

int i = '2' - '0'; // 50 - 48 -> 2 저장

Math.round() : 소수점 첫째자리에서 반올림한 값을 반환

8. 나머지연산자 - %
- 나누기한 나머지를 반환한다.
- 홀수, 짝수 등 배수검사에 주로 사용한다.
int share = 10 / 8; -> 몫 : 1
int remain = 10 % 8; -> 나머지 : 2
10 % 8 -> 2
10 % -8 -> 2
-10 % 8 -> -2
-10 % -8 -> -2

9. 쉬프트연산자 - <<, >>, >>>
- 2의 n제곱으로 곱하거나 나눈 결과를 반환한다.
- 곱셈, 나눗셈보다 빠르다.
x << n 은 x * 2의 n제곱과 같다.
x >> n 은 x / 2의 n제곱과 같다.

10. 비교연산자 - >, <, >=, <=, ==, !=
- 피연산자를 같은 타입으로 변환한 후에 비교한다.
결과 값은 true 또는 false이다.
- 기본형(boolean제외)과 참조형에 사용할 수 있으나 참조형에는 ==와 !=만 사용할 수 있다.

11. 비트연산자 - &, |, ^
- 피연산자를 비트단위로 연산한다.
실수형(float, double)을 제외한 모든 기본형에 사용가능
- OR연산자(|) : 피연산자 중 어능 한쪽이 1이면 1이다.
- AND연산자(&) : 피연산자 양쪽 모두 1이면 1이다.
-XOR연산자(^) : 피연산자가 서로 다를 때 1이다.

12. 논리연산자 - &&, ||
- 피연산자가 반드시 boolean이어야 하며 연산결과도 boolean이다.
&&가 ||보다 우선순위가 높다. 같이 사용되는 경우 괄호를 사용하자.
- OR연산자(||) : 피연산자 중 어느 한 쪽이 true이면 true이다.
- AND연산자(&&) : 피연산자 양 쪽 모두 true이면 true이다.

13. 삼항연산자 - ? :
- 조건식의 연산결과가 true이면 '식1'의 결과를 반환하고, false이면 '식2'의 결과를 반환한다.
(조건식) ? 식1 : 식2

14. 대입연산자 - =
- 오른쪽 피연산자의 값을 왼쪽 피연산자에 저장한다.
단, 왼쪽 피연산자는 상수가 아니어야 한다.

'기초튼튼 > JAVA' 카테고리의 다른 글

배열  (0) 2019.06.02
조건문과 반복문  (0) 2019.05.31
형식화된 출력과 화면 입력(printf() 와 Scanner)  (0) 2019.05.29
변수의 타입  (0) 2019.05.28
변수(variable)란?  (0) 2019.05.27