: 연산에 사용되는 값
: 항을 이용하여 연산하는 기호
| 연산자 | 설명 | 예 |
|---|---|---|
| 단항 연산자 | 항이 한 개인 연산자 | ++num |
| 이항 연산자 | 항이 두 개인 연산자 | num1 + num2 |
| 삼항 연산자 | 항이 세 개인 연산자 | (5 > 3)? 1 : 0; |
| 형 | 연산자 |
|---|---|
| 대입 | = |
| 부호 | +, - |
| 산술 | +, -, *, /, % |
| 증감 | ++, -- |
| 관계 | <, >, >=, <=, ==, != |
| 논리 | &&, |
| 복합 | +=, -=, 8=, /=, %=, <<=, >>=, >>>=, &=, |
| 조건 | 조건식? 결과1 : 결과2; |
| 비트 | ~, &, |, ^, <<, >>, >>>, <<< |
변수에 값을 대입하는 연산자
연산의 결과를 변수에 대입
우선순위가 가장 낮은 연산자
왼쪽변수에 오른쪽변수(값)을 대입
package assignment;
public class OperationEx0 {
public static void main(String[] args) {
int num1 = 10; // 같다 =
int value;
value = num1 + 10;
System.out.println(num1); //10
System.out.println(value); //20
}
}
단항 연산자
양수/음수의 표현, 값의 부호를 변경
package arithmetic;
public class OperationEx {
public static void main(String[] args) {
//부호 연산자
int num1 = 10;
int num2 = 20;
System.out.println(+num1); //10
System.out.println(-num2); //-20
System.out.println(num2); //20
num2 = -num2;
System.out.println(num2); //-20
}
}
사칙연산에 사용되는 연산자
%는 나머지를 구하는 연산자
=> 숫자n의 나머지는 0~n-1 범위의 수
=> 특정 범위 안의 수를 구할 때 종종 사용
package arithmetic;
public class OperationEx2 {
public static void main(String[] args) {
//산술 연산자
int mathScore = 90;
int engScore = 70;
int totalScore = mathScore + engScore;
System.out.println(totalScore); //160
// int avgScore = (mathScore + engScore)/2;
int avgScore = totalScore /2;
System.out.println(avgScore); //80
}
}
단항 연산자
1만큼 더하거나 1만큼 뺄 때 사용하는 연산자
항의 앞/뒤 위치에 따라 연산의 결과가 달라짐
package arithmetic;
public class OperationEx3 {
public static void main(String[] args) {
//증가 감소 연산자
int gameScore = 150;
int lastScore1 = ++gameScore;
// int lastScore1 = gameScore++;
// gameScore++ => gameScore = gameScore + 1;
System.out.println(lastScore1); //151
System.out.println(gameScore); //151
int lastScore2 = --gameScore;
System.out.println(lastScore2); //150
}
}
이항 연산자
연산의 결과가 ture, false로 반환됨
package relational;
public class OperationEx4 {
public static void main(String[] args) {
// 관계 연산자
int num1 = 5;
int num2 = 3;
boolean value = (num1 > num2);
System.out.println(value); //ture
System.out.println(num1 < num2); //false
System.out.println(num1 >= num2); //true
System.out.println(num1 <= num2); //false 5<=3
System.out.println(num1 == num2); //false
System.out.println(num1 != num2); //ture
}
}
관계 연산자와 혼합하여 많이 사용됨
연산의 결과가 ture, false로 반환됨
package logical;
public class OperationEx5 {
//논리 연산자
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
boolean flag = (num1 > 0) && (num2 > 0);//true && true
System.out.println(flag);
flag = (num1 < 0) && (num2 > 0); //false && true
System.out.println(flag);
flag = (num1 > 0) || (num2 > 0); //true || true
System.out.println(flag); //true
flag = (num1 < 0) || (num2 > 0); //false || true
System.out.println(flag); //false
flag = !(num1 > 0); //!(true)
System.out.println(flag); //false
}
}
package logical;
public class OperationEx6 {
public static void main(String[] args) {
//단락회로평가실습
int num1 = 10;
int i = 2;
//논리곱 연산 시 앞 항목이 false면 뒤의 항은 연산하지 않음
boolean value = ((num1 = num1 + 10)<10)&&((i=i+2)<10);
System.out.println(value); //false
System.out.println(num1); //20
System.out.println(i); //2
value = ((num1 = num1 + 10)>10)||((i=i+2)<10);
System.out.println(value); //ture
System.out.println(num1); //30
System.out.println(i); //2
}
}
대입 연산자와 다른 연산자를 조합해 하나의 연산자 처럼 사용함
프로그램에서 자주 사용함
| 연산자 | 기능 |
|---|---|
| += | 두 항의 값을 더해서 왼쪽항에 대입 |
| -= | 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입 |
| *= | 두 항의 값을 곱해서 왼쪽 항에 대입 |
| /= | 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입 |
| %= | 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입 |
| <<= | 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입 |
| >>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입 |
| >>>= | 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입 |
| &= | 두 항의 &비트 연산 후 그 값을 왼쪽 항에 대입 |
| |= | 두 항의 |비트 연산 후 그 값을 왼쪽 항에 대입 |
| ^= | 두 항의 ^비트 연산 후 그 값을 왼쪽 항에 대입 |
비트 단위로 연산이 이루어지는 연산자
산술 연산을 비트 이동 연산자를 사용하면 어떤 수의 2배수, 4배수를 만들어 속도를 빠르게 함