cs/java-spring-boot
[Zero-base] 1-9. 연산자와 피연산자
Lomo
2022. 1. 14. 16:53
반응형
표현식과 평가
연산자
- 더하기, 빼기, 곱하기, 나누기 (나머지 연산자 및 대입 연산자 표함)
- 이미 정의된 연산을 수행하는 문자 또는 문자 조합 기호
피연산자
- 연산에 참여하는 변수나 상수
표현식
- 자바 프로그래밍에서 연산자와 피연산자의 조합으로 구성된 연산식 (표현식)은 항상 하나의 결과 값이 있음
연산자의 종류와 우선순위
연산자 종류
- 피연산자의 수에 따라 단항, 이항, 삼항 연산자가 있음
- 단항 연산자 : ++, --
- 이항 연산자 : +, -, *, /, %, =
- 삼항 연산자 : (조건) ? (참) : (거짓)
우선순위 (왼쪽에서 오른쪽으로 연산)
- 1 후위 단항 i++, i--
- 2 전위 단항 ++i, --i, +val, -val, !
- 3 곱셈/나눗셈/나머지 *, /, %
- 4 덧셈/뺄셈 +, -
- 5 비트 이동 <<, >>, >>>
- 6 관계 <, >, <=, >=, intanceof
- 7 동등 ==, !=
- 8 비트 AND &
- 9 비트 XOR ^
- 10 비트 OR |
- 11 논리 AND &&
- 12 논리 OR ||
- 13 조건 삼항 (조건) ? (참) : (거짓)
- 14 대입 (오른쪽에서 왼쪽으로 대입) =, +=, -=
대입 연산자 (assignment operator)
- 연산자의 오른쪽 값을 왼쪽 변수에 저장하는 연산자
- 자정한다는 의미로 왼편 항에는 저장 가능한 형태(변수)가 와야 함
산술 연산자 (가감승제)
- + (문자열도 가능)
- -
- *
- /
- %
증감 연산자
- 전위 증가 연산자 : ++i
- 전위 감소 연산자 : --i
- 후위 증가 연산자 : i++
- 후위 감소 연산자 : i--
조건 연산자
- (조건)의 논리(참/거짓) 값에 따라 피연산자 (2개) 중 하나가 결과 값이 됨
- 삼항 연산자 (유일)
관계 연산자
- 2개의 피연산자의 크기를 비교하는 연산자
- 크기를 비교하기 때문에 결과값은 boolean 값 (true, false)
- ex. >, >=, <, <=, ==, !=
논리 연산자
- AND : &&
- OR : ||
- XOR : ^ (이항 연산자로 두 피연산자가 달라야함)
- NOT : !
- AND, OR, XOR : 이항 연산자
- NOT : 단항 연산자
- 피연산자들은 boolean 값이면, 그 결과도 boolenan 값임 (true, false)
- 피연산자 2개 중 왼쪽에 있는 피연산자만으로 전체 결과가 결정된다면 오른쪽 피연산자는 평가하지 않음
비트 논리 연산자
- &, |, ^, ~
- 피연산자 정수 값을 비트 단위로 논리 연산을 수행 -> 결과도 정수 값 (int)
- 보수 연산자 (~)는 단항 연산자
x | y | x & y | x | y | x ^ y | ~x |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
비트 이동 연산자 (bit shift operators)
- signed left shift (op1 >> op2) :
- op1을 오른쪽으로 op2 비트만큼 이동
- 가장 왼쪽 부호 비트는 원래 비트로 채움
- signed right shift (op1 << op2) :
- op1을 왼쪽으로 op2 비트만큼 이동
- 가장 오른쪽 비트는 모두 0으로 채움
- unsigned right shift (op1 >>> op2) :
- op1을 오른쪽으로 op2 비트만큼 이동
- 가장 왼쪽 부호 비트는 모두 0으로 채움
축약 대입 연산자
- X = X + 2; → X +=2;
- X = X << Y; → X <<= Y; //비트연산자
- X = X | Y; → X |= Y;
형변환 연산자
자동 형변환 (묵시적 형변환)
- 자바연산은 동일한 형의 피연산자로 연산을 수행
- ex. 12 / 3.0 → 12.0 / 4.0
- 정수형 데이터를 실수형으로 변환한 경우, 오차가 존재할 수 있지만 데이터 손실은 발생되지 않음
명시적 형변환 (explicit type cast)
- 실수를 정수로 변환
- 범위가 큰 정수형에서 더 작은 정수형으로 변환할 때는 명시적 형변환 필요
- ex. int intValue = 10.0 / 1.0; //오류
- ex. int intValue = (int) (10.0 / 1.0);
기타 참고사항
ArithmeticException
- 정수를 0으로 나우면 실행 중 발생 (RuntimeException)
Infinity
- 실수를 0.0으로 나누면 무한대를 의미
byte와 short의 산술 연산
- 모두 int로 변환되어 연산을 수행
연산자 우선순위
- 단항 > 산술 > 이동 > 관계 > 동등 > 비트논리 > 논리 > 조건 > 대입
반응형