<Java 연산자>
1. 논리부정 연산자 (!)
논리부정 연산자는 true를 false로, false를 true로 바꿔주는 연산자
System.out.println("true의 부정 : " + !(true)); // false
System.out.println("false의 부정 : " + !(false)); // true
int num1 = 10, num2 = 5;
System.out.println("값1 > 값2 : " + (num1 > num2)); // true
System.out.println("!(값1 > 값2) : " + !(num1 > num2)); // false

2. 증감연산자 (++, --)
변수의 값을 1씩 증가시키거나 감소시키는 연산자입니다. 위치에 따라 동작이 달라진다.
<전위연산 vs 후위연산>
| 구분 | 연산자 | 동작 방식 |
|---|---|---|
| 전위연산 | ++변수, --변수 |
선 증감, 후 처리 |
| 후위연산 | 변수++, 변수-- |
선 처리, 후 증감 |
int num1 = 0;
System.out.println(num1++); // 0 출력 후 num1을 1로 증가
System.out.println(++num1); // num1을 2로 증가 후 2 출력
System.out.println(num1--); // 2 출력 후 num1을 1로 감소
System.out.println(--num1); // num1을 0으로 감소 후 0 출력

3. 산술연산자와 복합대입연산자
기본 산술연산자
| 연산자 | 의미 |
|---|---|
+ |
덧셈 |
- |
뺄셈 |
* |
곱셈 |
/ |
나눗셈 |
% |
나머지 |
복합대입연산자
산술연산자와 대입연산자를 결합한 형태
| 연산자 | 의미 |
|---|---|
+= |
a = a + b |
-= |
a = a - b |
*= |
a = a * b |
/= |
a = a / b |
%= |
a = a % b |
int a = 10;
a += 5; // a = a + 5와 동일, a = 15
a *= 2; // a = a * 2와 동일, a = 30
4. 비교연산자 (관계연산자)
두 값을 비교하여 boolean 타입의 결과를 반환
| 분류 | 연산자 | 의미 |
|---|---|---|
| 대소비교 | < |
작다 |
> |
크다 | |
<= |
작거나 같다 | |
>= |
크거나 같다 | |
| 동등비교 | == |
같다 |
!= |
다르다 |
int a = 10, b = 25;
System.out.println("a == b : " + (a==b)); // false
System.out.println("a <= b : " + (a<=b)); // true
System.out.println("(a*2) > (b/5) : " + ((a*2) > (b/5))); // true (20 > 5)

원시타입 vs 참조타입 비교 주의사항
원시타입 비교
int x = 10, y = 10;
System.out.println(x == y); // true (값 비교)
참조타입 비교 (String)
// 문자열 리터럴 - String Pool에서 재사용
String str1 = "hello";
String str2 = "hello";
System.out.println(str1 == str2); // true (같은 주소 참조)
// new 키워드로 생성 - 새로운 객체 생성
String str3 = new String("hello");
System.out.println(str1 == str3); // false (다른 주소)
System.out.println(str1.equals(str3)); // true (값 비교)

>>> String 비교 시에는 반드시 equals() 메서드를 사용
String 비교의 올바른 방법
// 올바른 문자열 비교
String str1 = "hello";
String str3 = new String("hello");
// equals() 메서드 사용
System.out.println(str1.equals(str3)); // true
System.out.println("hello".equals(str3)); // 리터럴도 가능

특이케이스: 문자와 숫자 비교
System.out.println('A' + 0); // 65 (ASCII 코드)
System.out.println('A' > 70); // false (65 > 70)

5. 논리연산자
두 개의 논리값을 연산하여 논리값을 반환합니다.
<논리연산자 종류>
| 연산자 | 의미 | 설명 |
|---|---|---|
&& |
AND | 모든 조건이 true일 때 true |
|| |
OR | 하나라도 true면 true |
Ex : 문자 분류기
Scanner sc = new Scanner(System.in);
System.out.print("문자 하나 입력 : ");
char ch = sc.next().charAt(0);
boolean isUpper = ch >= 'A' && ch <= 'Z';
boolean isLower = ch >= 'a' && ch <= 'z';
System.out.println("알파벳인가? " + (isUpper || isLower));
System.out.println("대문자인가? " + isUpper);
System.out.println("소문자인가? " + isLower);

6. 삼항연산자 (조건연산자)
조건에 따라 값을 선택하는 연산자입니다.
표현식
조건식 ? 참일_경우_값 : 거짓일_경우_값
int num = (3 < 10) ? 10 : 20; // num = 10
중첩 삼항연산자 (양수/음수/0 판별) 추천x
Scanner sc = new Scanner(System.in);
System.out.print("정수값 입력: ");
int num = sc.nextInt();
String result = (num == 0) ? "0" : (num > 0) ? "양수" : "음수";
System.out.println(result);

핵심 포인트
- 증감연산자: 전위/후위의 차이점 숙지
- String 비교:
equals()메서드 사용 필수 - 논리연산자: 조건 결합시 활용
- 삼항연산자: 간단한 조건 분기에 유용
'Java' 카테고리의 다른 글
| Java_06) Loop - 반복문 (4) | 2025.08.26 |
|---|---|
| Java_05) Control - 조건문(제어문) (1) | 2025.08.26 |
| Java_03 ) Type Conversion - 형변환 (1) | 2025.08.20 |
| Java_02) Output, Input 입출력 (2) | 2025.08.19 |
| Java_01) Variable 변수 (5) | 2025.08.18 |