OneDev
[JAVA] 2.연산자(Java Operator) 본문
▣ 목차
1. 연산자와 연산식
2. 연산의 방향과 우선순위
3. 단항연산자
4. 이항연산자
5. 삼항연산자( ? : )
▣ 1. 연산자와 연산식
◈ 연산이란?
→ 데이터를 처리하여 결과를 산출하는 것
◈ 연산자(Operator)
→ 연산에 사용되는 표시나 기호(+, -, * , /, % ,= , ......)
◈ 피연산자(Operand)
→ 연산 대상이 되는 데이터
◈ 연산식
→ 연산자와 피 연산자를 이용하여 연산의 과정을 기술한 것
◈ 연산자의 종류
※ 각 연산자별 구체적 설명은 후술함
연산자 종류 | 연산자 | 피연산자수 | 산출값 타입 | 기능설명 |
산술 | +, -, * , / , % | 이항 | 숫자 | 사칙연산 및 나머지 계산 |
부호 | +, - | 단항 | 숫자 | 숫자의 부호 표기 |
문자열 | + | 이항 | 문자열 | 두 문자열을 연결 |
대입 | =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= | 이항 | 우변의 값을 좌변의 변수에 대입 | |
증감 | ++, -- | 단항 | 숫자 | 변수의 값을 증가시키거나 감소시킴 |
비교 | ==, != , >, <, >=, <=, instanceof | 이항 | boolean | 값의 비교 |
논리 | !, &, |, &&, || | 단항/이항 | boolean | 논리적 AND, OR, NOT 연산 |
조건 | (조건식) ? A : B | 삼항 | 조건식에 따라 A 또는 B 중 하나 선택 | |
비트 | ~, &, |, ^ | 단항/이항 | 숫자/boolean | 비트 AND, OR, XOR 연산 |
쉬프트 | >>, <<, >>> | 이항 | 숫자 | 비트를 좌/우측으로 밀어서 이동 |
▣ 2. 연산의 방향과 우선순위
◈ 연산의 방향
◈ 연산식에 연산자가 여러가지 있을 경우,
- 연산 우선순위가 높은 연산자가 먼저 연산되며,
- 연산 우선순위가 동일한 연산자들이 있을 경우, 왼쪽에 있는 연산자를 먼저 수행한다.
▣ 3. 단항연산자
◈ 단항연산자란?
→ 피연산자(Operand)가 1개인 연산자
◈ 단항 연산자의 종류
(1) 부호 연산자 : +, -
- boolean 타입과 char 타입을 제외한 기본타입에 사용 가능
(2) 증감 연산자 : ++, --,
- 변수의 값을 1 증가(++)시키거나 감소(--)시키는 연산자.
- 전위형(profix) : 변수 앞에 붙는 증감연산자로, 변수의 값을 먼저 증감시킨 후에 다른 연산자를 처리한다.
- 후위형(postifx): 변수 뒤에 붙는 증감연산자로, 다른연산자를 먼저 처리한 후 변수의 값을 증감시킨다.
(3) 논리 부정 연산자 : !
boolean 형 데이터에만 사용 가능.
- 피연산자의 값이 true 라면 false를 리턴하고
- 피연산자의 값이 false 라면 true 를 리턴한다.
(4) 비트연산자 : ~
- byte, short, int, long 타입만 피연산자가 될 수 있다
- 비트값을 반전(0→ 1 , 1→ 0) 시킨다
구분 | 종류 | 기능 설명 | 예시 |
단항연산자 |
++ | 변수의 값을 1씩 증가 | ++a |
-- | 변수의 값을 1씩 감소 | a-- | |
! | 피연산자가 true 일 경우 → false 리턴 | !True | |
~ | 비트값을 반전 | ~10 |
▣ 4. 이항연산자
◈ 이항연산자란?
→ 피연산자가 2개인 연산자
◈ 이항연산자의 종류
- 산술연산자 : +, -, *, /, %
- 문자열 연결 연산자 : +
- 대입연산자 : =, +=, -=, *=, /=, %=, ^=, &=, |=, <<=, >>=, >>>=
- 비교연산자 : <, <=, >, >=, ==, !=
- 논리연산자 : &&, ||, &, |, ^, !
- 비트 논리연산자 : &, |, ^
- 비트 이동연산자 : <<, >>, >>>
구분 | 연산자 | 연산식 예시 | 설명 |
산술연산자 | + | a + b | 덧셈 연산 |
- | a - b | 뺄셈 연산 | |
* | a * b | 곱셈 연산 | |
/ | a / b | 나눗셈 연산 | |
% | a % b | 좌측 피연산자를 우측 피연산자로 나눈 나머지를 구하는 연 | |
문자열 연산자 | + | "a" + "b" | 피연산자중 문자열이 있으면 문자열로 결합 |
비교연산자 | == | a == b | 두 피연산자의 값이 같으면 true를 반환, 다르면 false 반환 |
!= | a != b | 두 피연산자의 값이 다르면 true 반환, 같다면 false 반환 | |
> | a > b | a 가 b 보다 크다면 true 반환, a가 b보다 작거나 같다면 false 반환 | |
>= | a >= b | a 가 b 보다 크거나 같다면true 반환, a가 b보다 작다면 false 반환 | |
< | a < b | a 가 b 보다 작다면 true 반환, a가 b보다 크거나 같다면 false 반환 | |
<= | a <= b | a 가 b 보다 작거나 같다면true 반환, a가 b보다 크다면 false 반환 | |
논리연산자 | && 또는 & | a & b | 논리곱 (AND)→ 두 피연산자가 모두 true 일 경우에만 true 반환, 그 외 false |
|| 또는 | | a | b | 논리합(OR) → 피연산자 중 하나 이상이 true이면 true 반환 | |
^ | a ^ b | 배타적논리합(XOR) → 두 피연산자 중 하나가 true이고 다른 하나가 false 일 경우에만 true 반환 | |
비트논리연산자 | & | 1 & 1 | 논리곱(AND) → 두 비트가 모두 1인 경우만 연산 결과 1 |
| | 1 | 0 | 논리합(OR) → 두 비트 중 하나 이상 1인 경우 연산 결과 1 | |
^ | 1 ^ 1 | 배타적논리합(XOR) → 두 비트중 하나는 1이고 다른 하나가 0인경우 연산결과 1 | |
~ | 논리부정(NOT) → 보수 | ||
비트이동연산자 | << | a << b | 정수 a 의 각 비트를 b 만큼 왼쪽으로 이동, 빈자리는 0으로 채워진다. |
>> | a >> b | 정수 a 의 각 비트를 b 만큼 오른쪽이로 이동, 빈자리는 정수 a 의 최상위 부호 비트(MSB)와 같은값으로 채워진다. | |
>>> | a >>> b | 정수 a 의 각 비트를 오른쪽으로 이동, 빈자리는 0으로 채워진다 | |
단순대입연산자 | = | a = b | 우측 피연산자의 값을 좌측 변수에 저장 |
복합대입연산자 | += | a += b | 우측 피연산자의 값을 변수의 값과 더한 후에 다시 저장 (a = a+b와 동일) |
-= | a -= b | 우측 피연산자의 값 만큼 변수의 값에서 뺀 후에 다시 저장 (a = a-b와 동일) | |
*= | a *= b | 우측 피연산자의 값을 변수의 값과 곱한 후에 다시 저장 (a = a*b와 동일) | |
/= | a /= b | 우측 피연산자의 값을 변수의 값과 나눈 후에 다시 저장 (a = a/b와 동일) | |
%= | a %= b | 우측 피연산자의 값으로 변수의 값을 나눈 후 나머지를 변수에 저장 (a = a % b) 와 동일 |
|
&= | a &= b | 우측 피연산자의 값과 변수의 값을 &연산한 후 결과를 변수에 저장 | |
|= | a |= b | 우측 피연산자의 값과 변수의 값을 | 연산한 후 결과를 변수에 저장 | |
^= | a ^= b | 우측 피연산자의 값과 변수의 값을 ^ 연산한 후 결과를 변수에 저장 | |
<<= | a <<= b | 우측 피연산자의 값과 변수의 값을 << 연산한 후 결과를 변수에 저장 | |
>>= | a >>= b | 우측 피연산자의 값과 변수의 값을 >>연산한 후 결과를 변수에 저장 | |
>>>= | a >>>= b | 우측 피연산자의 값과 변수의 값을 >>> 연산한 후 결과를 변수에 저장 |
▣ 5. 삼항연산자
◈ 삼항연산자란?
→ 피연산자가 3개인 연산자
→ 앞의 조건식 결과에 따라 콜론(:) 앞/뒤의 피 연산자를 선택한다(조건문으로 대체가능)
→ 피연산자에 다시 삼항연산자를 넣어 여러가지 조건으로 케이스 분류를 할 수 있다
※ 다음의 두 코드는 동일한 조건문이다
// 학생들의 점수에 따라 등급 매기기
int score = 95;
// 삼항연산자 사용
char grade = (score > 90) ? 'A' : 'B' ;
// if 문 사용
char grade;
if(scroe >90){
grade = 'A';
}else{
grade = 'B';
}
'Language > JAVA' 카테고리의 다른 글
[JAVA] Object 클래스 (0) | 2024.05.06 |
---|---|
[JAVA] java.lang 패키지 (0) | 2024.04.29 |
[JAVA] 입력받기 (Scanner vs BufferedReader) (0) | 2023.10.03 |
[JAVA] 배열 출력하기 (반복문 / Arrays.toString()) (0) | 2023.06.03 |
[JAVA] 1.변수(Variable) : 선언, 초기화, 자료형, 형변환 (0) | 2023.01.02 |
Comments