-
Java | Operator 연산자JAVA/JAVA 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에서 사용하는 연산자들에 대해 알아보았습니다.
증감연산자와 관계, 논리연산자는 제어문에서도 많이 사용되기 때문에 익혀두면 보다 수월하게
제어문을 작성할 수 있을 것입니다.
'JAVA > JAVA' 카테고리의 다른 글
Java | 제어문_조건문, 선택문 (0) 2020.01.16 Java | Casting 형변환 (0) 2020.01.16 Java | Data Type 자료형 (0) 2020.01.15 Java | Variable 변수, Scope, Constant 상수 (0) 2020.01.15 Java | 기본 문법 (0) 2020.01.15