JAVA/JAVA
Java | Operator 연산자
pathas
2020. 1. 16. 21:34
Operator 연산자
연산을 실행하는 기호
※ 피연산자 : 연산의 대상이 되는 값, 항이라고도 함
산술연산자
피연산자에 대한 산술적 계산을 실행할 때 사용하는 연산자
단항 산술 연산자
| 단항 산술 연산자 | 설명 |
|---|---|
| + | 양수임을 표시하는 연산자, 양수 표기시 생략 |
| - | 음수임을 표시하는 연산자 |
이항 산술 연산자
| 이항 산술 연산자 | 설명 |
|---|---|
| + | 두 항의 값을 더함 |
| - | 앞의 항에서 뒤의 항을 뺌 |
| * | 두 항의 값을 곱함 |
| / | 앞의 항을 뒤의 항으로 나눔 |
| % | 앞의 항을 뒤의 항으로 나눈 나머지를 구함 |
증감연산자
특정 변수의 값을 1만큼 증가시키거나 감소시키는 역할을 하는 연산자
주로 제어문에 많이 사용됨
| 단항 산술 연산자 | 설명 |
|---|---|
| ++ | 피연산자의 값을 1만큼 증가시킴 |
| -- | 피연산자의 값을 1만큼 감소시킴 |
- 전위연산자 : ++(--)변수, 변수값을 사용하기 전에 +(-)1 계산이 먼저 이루어짐
- 후위연산자 : 변수++(--), 변수값을 먼저 사용하고 나서 나중에 +(-)1 계산이 이루어짐
사용례 1
public class Op1 {
public static void main(String[] args) {
int a = 4;
int b = a++;
int c = ++a;
System.out.println("a값: "+a+", b값: "+b+", c값: "+c);
// a값: 6, b값: 4, c값: 6
/*
① a = 4
② b에 a(4)가 대입된 후 a = 4 + 1 계산이 이루어지기
때문에 b의 값은 4가 출력
③ a = 5인 상태에서 a = 5 + 1 계산이 먼저 이루어지기 때문에
a = 6이 되고, c에 a(6)이 대입돼서 변수 a, c값으로 6이 출력
*/
}
}
※ 대입연산자 오른쪽의 산술연산자가 먼저 실행되고 그 값이 변수에 저장됨
사용례 2
public class Op2 {
public static void main(String[] args) {
int i = 8;
System.out.println("i: "+i); // i: 8
System.out.println("++i: "+(++i)); //++i: 9
System.out.println("i++: "+(i++)); //i++: 9
System.out.println("i: "+i); // i: 10
System.out.println("--i: "+(--i)); // --i: 9
System.out.println("i--: "+(i--)); //i--: 9
System.out.println("i: "+i); // i: 8
}
}
사용례 3 - JavaScript
JavaScript에서 증감연산자를 사용하는 것과 동일함
var i = 8;
console.log("i: "+i); // i: 8
console.log("i++: "+(i++)); // i: 8
console.log("++i: "+(++i)); // i: 10
console.log("i: "+i); // i: 10
※ 웹브라우저에 표현하고 싶으면 console.log()를 document.write()로 바꾸면 됨
관계연산자
| 관계연산자 | 설명 |
|---|---|
| > | 왼쪽 값이 오른쪽 값보다 크다면 참 |
| >= | 왼쪽 값이 오른쪽 값 이상이라면 참 |
| < | 왼쪽 값이 오른쪽 값보다 작다면 참 |
| <= | 왼쪽 값이 오른쪽 값 이하라면 참 |
| != | 왼쪽과 오른쪽 값이 같지 않다면 참 |
| == | 비교연산자 ① 변수에 들어있는 값(내용)이 같은 지 확인할 때 사용 ② 참조형(class형) : 저장 위치 비교시 사용 |
논리연산자
| 논리연산자 | 설명 |
|---|---|
| & | AND, 연결된 두 항의 논리값이 모두 참이여야 참을 반환 |
| && | AND, 조건평가 |
| | | OR, 연결된 두 항의 논리값 중 어느 하나라도 참이면 참을 반환 |
| || | OR, 조건평가 |
| ^ | XOR, 연결된 두 항의 진리값이 같으면 거짓, 다르면 참 반환 |
| ! | NOT, 뒤에 오는 항의 진리값을 반대로 바꿔서 반환 |
모두평가 / 조건평가
| 모두평가 | 조건평가 |
|---|---|
| &, | | &&, || |
| 첫 항의 결과와 상관없이 무조건 두 항 모두 계산하는 방식 |
첫 항의 결과에 따라서 두 번째항의 계산을 생략할 수도 있는 방식 |
※ 요즘에는 크게 구분하지 않고 사용한다고 함
사용례_조건평가
public class Op3 {
public static void main(String[] args) {
boolean b = 2>3 && 5<7;
/* 첫 항의 값이 F이면 &&연산자에 의해 두 번째 항의 값과 관련없이
무조건 F를 반환하기 때문에 두 번째 항 계산 생략 */
}
}
사용례_대입연산자 & 논리연산자
public class Op3 {
public static void main(String[] args) {
int t1 = 3, t2 = 5, t3 = 7;
boolean b1, b2, b3;
boolean b4 = true;
// >, < 관계연산자
System.out.println("(t1>t2)?: " + (t1 > t2)); // false
System.out.println("(t2<t3)?: " + (t2 < t3)); // true
// &&, || 조건평가
b1 = (t1 > t2) && (t2 < t3);
System.out.println("(t1>t2) && (t2<t3): " + b1);
// (t1>t2) && (t2<t3): false
b2 = (t1 > t2) || (t2 < t3);
System.out.println("(t1>t2) || (t2<t3): " + b2);
// (t1>t2) || (t2<t3): true
// !(NOT)
b3 = !b4;
System.out.println("!b4: " + b3);
// !b4: false
// &, | 모두평가
b1 = (t1 > t2) & (t2 < t3);
System.out.println("(t1>t2) & (t2<t3): " + b1);
// (t1>t2) & (t2<t3): false
b2 = (t1 > t2) | (t2 < t3);
System.out.println("(t1>t2) | (t2<t3): " + b2);
// (t1>t2) | (t2<t3): true
// ^
b2 = (t1 > t2) ^ (t2 < t3);
System.out.println("(t1>t2) ^ (t2<t3): " + b2);
// (t1>t2) ^ (t2<t3): true, 두 항의 진리값이 다르기 때문에 true
}
}
대입연산자
= : 왼쪽 변수에 오른쪽 항의 값을 대입하는 연산자
복합대입연산자
연산과 대입을 동시에 실행하는 연산자
연산자 하나로 두 개의 연산을 하기 때문에 실행 속도가 더 빠름
| 연산자 | 기능 |
|---|---|
| += | 두 항의 값을 더해서 왼쪽 항에 대입 |
| -= | 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입 |
| *= | 두 항의 값을 곱해서 왼쪽 항에 대입 |
| /= | 왼쪽 항을 오른쪽 항으로 나눈 뒤 몫을 왼쪽 항에 대입 |
| %= | 왼쪽 항을 오른쪽 항으로 나눈 뒤 나머지를 왼쪽 항에 대입 |
※ +=, -=의 경우 1보다 큰 수일 때 주로 사용
→ 증감연산자 ++, --가 있기 때문에
사용례
public class Op4 {
public static void main(String[] args) {
int a = 5, b = 7;
// +=
a += b;
System.out.println("a: " + a); // a: 12
// -=
a -= b;
System.out.println("a: " + a); // a: 5
// *=
a *= b;
System.out.println("a: " + a); // a: 35
// /=
a /= b;
System.out.println("a: " + a); // a: 5
// %=
a %= b;
System.out.println("a: " + a); // a: 5
}
}
※ /(나누기) 연산의 결과 값에 소수점이 있다면 버려짐
→ 기본연산자가 정수 자료형인 int이기 때문에
삼항연산자_조건연산자
(조건식) ? 결과1 : 결과2;
조건식의 진리값이 참이면 결과1을 선택하고
진리값이 거짓이면 결과2를 선택
사용례
public class Op4 {
public static void main(String[] args) {
int x = 10, y = -10;
int absX = (x >= 0) ? x : -x;
int absY = (y >= 0) ? y : -y;
System.out.println("absX: " + absX); // absX : 10
System.out.println("absY: " + absY); // absY : 10
}
}
※ 삼항연산자를 활용해서 변수에 값을 저장할 수 있음
Java에서 사용하는 연산자들에 대해 알아보았습니다.
증감연산자와 관계, 논리연산자는 제어문에서도 많이 사용되기 때문에 익혀두면 보다 수월하게
제어문을 작성할 수 있을 것입니다.