자바에서는 여러 종류의 연산을 수행하기 위한 다양한 연산자를 제공하고 있습니다.
연산자 종류 | 연산자 | 피연산자 수 | 산출값 | 기능 |
---|---|---|---|---|
산술 | +, -, *, /, % | 이항 | 숫자 | 사칙연산과 나머지 |
부호 | +, - | 단항 | 숫자 | 음수와 양수 표시 |
문자열 | + | 이항 | 문자열 | 두 문자열을 연결 |
대입 | =, +=, -=, *=, /=, %= | 이항 | 다양 | 우변의 값을 좌변에 대입 |
증감 | ++, — | 단항 | 숫자 | 1만큼 증가/감소 |
비교 | ==, ≠, <, >, ≥, ≤, instanceof | 이항 | boolean | 값의 비교 |
논리 | !, &, | , &&, | ||
조건 | (조건식)?A:B | 삼항 | 다양 | 조건식에 따라 A 또는 B 중 선택 |
이항 연산자는 피연산자가 두 개인 연산자를 말합니다.
산술 연산자, 문자열 연결 연산자, 대입연산자, 비교 연산자, 논리 연산자, 비트 논리 연산사, 비트 이동 연산자 등이 있습니다.
산술연산자는 사칙연산을 다루는 연산자로 가장 기본적이면서 가장 많이 사용되는 연산자 중 하나 입니다.
public class operator {
public static void main(String[] args) {
int num1 = 10, num2 = 4;
System.out.println("+ 연산자 : " + (num1 + num2));
System.out.println("- 연산자 : " + (num1 - num2));
System.out.println("* 연산자 : " + (num1 * num2));
System.out.println("/ 연산자 : " + ((double)num1 / num2));
System.out.println("% 연산자 : " + (num1 % num2));
}
}
/
또는 %
연산자를 사용 할 때는 주의 할 점이 있습니다.
좌측 피연산자가 정수 타입인 경우 나누는 수인 우측 연산자는 0을 사용할 수 없습니다.
5 /
0.0 → Infinity (무한대)
5 %
0.0 → NaN (Not a Number)
try {
System.out.println(5 / 0);
} catch(ArithmeticException e) {
System.out.println("0 으로 나누면 안됨");
}
대입 연산자는 변수에 값을 대입할 때 사용하는 이항연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽 입니다.
int num1 = 10;
System.out.println(num1 += 2);
System.out.println(num1 -= 2);
System.out.println(num1 *= 2);
System.out.println(num1 /= 2);
증감 연산자는 피연산자를 1씩 증가 혹은 감소 시킬 때 사용하는 연산자 입니다.
단항연산자 입니다.
int num1 = 10;
System.out.println(num1++);
비교 연산자는 왼쪽의 피연산자와 오른쪽의 피연산자를 비교하여, 어느 쪽이 더 큰지, 작은지, 또는 서로 같은지를 판단합니다.
비교 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽입니다.
int x = 10;
int y = 20;
System.out.println(x > y);
System.out.println(x < y);
System.out.println(x == y);
System.out.println(x != y);
System.out.println(x >= y);
System.out.println(x <= y);
**&&**
: AND 연산자 이며 A이고 B, 즉 A와 B가 모두 만족해야 참이된다.||
: OR 연산자이며 A이거나 B, 즉 A와 B중 한개만 만족하면 참이 된다.!
: NOT연산자이며, 현재의 조건을 부정하므로 반대가 된다.int x = 10;
int y = 20;
boolean rst1;
boolean rst2;
boolean rst3;
rst1 = (x > 0) && (x < y);
rst2 = (x > 0) || (x > y);
rst3 = !((x > 0) || (x > y));
System.out.println(rst1);
System.out.println(rst2);
System.out.println(rst3);
3개의 피연산자를 필요로 하는 연산자 입니다.
프론트앤드 개발 시 조건문 보다 더 사용 빈도가 높습니다.
if ~ else 문 보다 간결 합니다.
Scanner sc = new Scanner(System.in); // 입력을 받기 위한 스캐너 객체 생성
System.out.print("나이를 입력 하세요 : ");
int age = sc.nextInt();
boolean isAdult = (age > 19) ? true : false;
System.out.println(isAdult);
문자열 결합 연산자인 +는 문자열을 서로 결합하는 연산자 입니다. 피연산자 중 한쪽이 문자열이면 + 연산자는 문자열의 결합 연산자로 사용 됩니다.
System.out.println("Java" + 18.04 + 12);
System.out.println(3 + 3.3 + "JDK");
달력(양력)은 지구가 태양을 공전하는 시간을 기준으로 작성 된다.
양력에서의 1년은 지구가 태양을 1바퀴 도는데 걸리는 시간이며, 시간은 365일 과 1/4만큼 걸린다.
[윤년의 조건]
public class Sample {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("년도를 입력 하세요 : ");
int year = in.nextInt();
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
System.out.println("윤년 입니다.");
} else {
System.out.println("윤년이 아닙니다.");
}
}
}
100의 자리 정수를 입력 받아서 3개의 변수에 나누어 대입 하기
Scanner in = new Scanner(System.in);
System.out.print("정수를 입력 하세요 : ");
int num = in.nextInt();
int a = num / 100;
int b = (num % 100) / 10;
int c = num % 10;
System.out.println("100의 자리 : " + a + ", 10의 자리 : " + b + ", 1의 자리 : " + c);
int val1 = 5;
int val2 = 5;
int val3 = 5;
int result1, result2, result3;
result1 = val1 + val2 * val3;
result2 = (val1 + val2) * val3;
result3 = val1 + (++val2) * val3; // val2에 증가 연산자를 표시하면 어떻게 될까?
(오른쪽으로 이동) : 지정된 수만큼 비트를 오른쪽으로 이동
int num1 = 10;
int num2 = 12;
System.out.println(num1 & num2);
System.out.println(num1 | num2);
System.out.println(num1 ^ num2);
System.out.println(~num1);
System.out.println(num1 << 1);
System.out.println(num1 >> 1);