자바에서 연산자는 변수의 값을 조작하거나 연산을 수행할 때 사용됩니다. 연산자의 종류는 다양하며, 피연산자(operand)의 개수에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 나눌 수 있습니다. 또한 각 연산자는 특정 데이터 타입에 맞추어 동작하며, 범위를 벗어나는 연산에서는 오버플로(overflow)나 언더플로(underflow) 현상이 발생할 수 있습니다. 이번 포스팅에서는 자바의 다양한 연산자와 그 사용법을 알아보겠습니다.
1. 단항 연산자 (Unary Operator)
단항 연산자는 하나의 피연산자를 가지고 동작하는 연산자입니다. 대표적으로 증감 연산자(++/--), 부호 연산자(+,-), 논리 반전 연산자(!), 비트 반전 연산자(~) 등이 있습니다.
1.1 증감 연산자 (++, --)
변수의 값을 1 증가시키거나 감소시키는 연산자입니다. 위치에 따라 후위 연산자와 전위 연산자로 구분됩니다.
- 전위 연산자: 먼저 값이 증가/감소한 후 연산에 사용됩니다.
- 후위 연산자: 먼저 연산에 사용된 후 값이 증가/감소합니다.
int x = 5;
int y = ++x; // 전위 연산: x는 6, y는 6
int z = x--; // 후위 연산: z는 6, 이후 x는 5
1.2 부호 연산자 (+, -)
숫자 앞에 붙어 그 수의 부호를 변경하거나 유지합니다.
int a = 3;
int b = -a; // b는 -3
1.3 논리 반전 연산자 (!)
논리 값을 반전시킵니다. true는 false로, false는 true로 변경됩니다.
boolean isTrue = false;
System.out.println(!isTrue); // true 출력
1.4 비트 반전 연산자 (~)
비트의 값을 반전시킵니다. 0은 1로, 1은 0으로 변경됩니다.
byte b = 10; // 0000 1010
System.out.println(~b); // 결과: -11
2. 이항 연산자 (Binary Operator)
이항 연산자는 두 개의 피연산자를 가지며, 산술 연산, 비교 연산, 논리 연산 등에 사용됩니다.
2.1 산술 연산자 (+, -, *, /, %)
기본적인 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 수행합니다.
int result = 7 % 3; // 결과: 1
2.2 비교 연산자 (==, !=, >, <, >=, <=)
두 값을 비교하여 true 또는 false를 반환합니다.
int a = 5;
int b = 3;
System.out.println(a == b); // false 출력
System.out.println(a >= b); // true 출력
2.3 논리 연산자 (&&, ||, &, |)
논리 연산자는 두 논리식을 연산하여 true 또는 false를 반환합니다.
&&
와||
는 Short Circuit 연산자입니다. 왼쪽 항의 결과에 따라 오른쪽 항이 실행되지 않을 수 있습니다.
boolean result = (a == 5) && (++b == 4); // b는 증가하지 않음, 결과: true
3. 비트 연산자 (Bitwise Operator)
비트 연산자는 두 값을 비트 단위로 연산합니다.
3.1 AND 연산자 (&)
두 비트가 모두 1일 때만 1을 반환합니다.
int a = 5; // 0000 0101
int b = 3; // 0000 0011
System.out.println(a & b); // 0000 0001, 결과: 1
3.2 OR 연산자 (|)
두 비트 중 하나만 1이어도 1을 반환합니다.
System.out.println(a | b); // 0000 0111, 결과: 7
3.3 XOR 연산자 (^)
두 비트가 서로 다를 때만 1을 반환합니다.
System.out.println(a ^ b); // 0000 0110, 결과: 6
3.4 비트 이동 연산자 (>>, <<)
비트를 왼쪽 또는 오른쪽으로 이동시킵니다.
int num = 192;
System.out.println(num >> 2); // 오른쪽으로 2칸 이동, 결과: 48
System.out.println(num << 2); // 왼쪽으로 2칸 이동, 결과: 768
4. 삼항 연산자 (Ternary Operator)
삼항 연산자는 조건식, 참일 때의 연산식, 거짓일 때의 연산식 세 개의 피연산자를 가집니다.
int x = 5;
String result = (x % 2 == 0) ? "짝수" : "홀수";
System.out.println(result); // 홀수 출력
5. 대입 연산자 (Assignment Operator)
대입 연산자는 변수에 값을 대입하는 데 사용됩니다. =
, +=
, -=
, *=
, /=
등의 형태가 있습니다.
int a = 5;
a += 3; // a = a + 3, 결과: 8
6. 표준 입/출력 (IO: Input/Output)
자바에서는 Scanner 클래스를 사용하여 입력을 받을 수 있습니다. 출력은 System.out.println()
을 이용합니다.
6.1 Scanner 사용법
- next(): 공백 전까지 문자열을 입력받음
- nextLine(): 공백 포함 전체 문자열 입력받음
- nextInt(): 정수 입력받음
- nextDouble(): 실수 입력받음
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = scan.next();
System.out.print("나이를 입력하세요: ");
int age = scan.nextInt();
System.out.println("이름: " + name + ", 나이: " + age);
scan.close();
}
}
연습 문제
문제 1: 3항 연산자를 이용한 절대값 구하기
0에서 10까지의 정수를 랜덤으로 생성하고, 5를 빼서 범위를 -5에서 5로 만든 후 절대값을 출력하세요.
int x = (int)(Math.random() * 11) - 5;
int absValue = (x < 0) ? -x : x;
System.out.println("절대값: " + absValue);
문제 2: 나이 판별 프로그램
Scanner를 이용해 사용자의 나이를 입력받고, 20세 이상이면 "성인", 그렇지 않으면 "미성년자"라고 출력하는 프로그램을 작성하세요.
import java.util.Scanner;
public class AgeCheck {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("나이를 입력하세요: ");
int age = scan.nextInt();
System.out.println(age >= 20 ? "성인입니다." : "미성년자입니다.");
scan.close();
}
}
'🗄️ Backend > Java' 카테고리의 다른 글
JAVA 예외 처리(Exception Handling)와 가비지 컬렉션 (Garbage Collection) (1) | 2024.10.10 |
---|---|
JAVA 패키지와 객체지향 개념 정리 (0) | 2024.10.10 |
JAVA 메서드와 객체지향 프로그래밍 (0) | 2024.10.10 |
JAVA 배열과 제어문(반복문) 정리 (0) | 2024.10.10 |
JAVA 변수와 데이터 타입: 개념부터 실습까지 (0) | 2024.10.10 |