[Java] Java의 연산자 (산술, 비교, 논리, 대입 등)🖥️ Dev/Language2025. 7. 5. 14:32
Table of Contents
이 글은 자바의 연산자에 대해 정리한 글입니다.
📖 연산자 (Operator)
- 연산자는 변수가 값(피연산자)에 특정 연산(계산, 비교, 논리 등)을 수행하는 기호 또는 키워드이다.
- 자바에서 연산자는 주로 산술 연산자, 비교 연산자, 논리 연산자, 대입 연산자 등이 있다.
- 연산자는 값과 값 사이에서 계산을 하거나, 논리 판단, 대입 등 다양한 역할을 하며, 피연산자(operand)의 타입과 개수에 따라 구분한다.
⚡ 우선순위와 결합 방향
- 여러 연산자가 한 줄에 있을 때, 우선순위에 따라 계산 순서가 달라진다.
- 산술 > 비교 > 논리 > 대입 순서로 계산의 우선순위가 결정된다.
- 괄호
()를 활용해서 연산 순서를 명확히 지정하는 것이 중요하다.
📖 산술 연산자 (Arithmetic Operator)
- 수학에서 자주 사용하는 계산(ex. 사칙연산 등)을 할 때 사용되는 연산자
| 연산자 | 의미 | 예시 | 결과 |
| + | 덧셈 | a + b | a와 b의 합 |
| - | 뺄셈 | a - b | a에서 b를 뺌 |
| * | 곱셈 | a * b | a와 b의 곱 |
| / | 나눗셈 | a / b | a를 b로 나눈 몫 (정수/정수 = 정수) |
| % | 나머지 | a % b | a를 b로 나눈 나머지 |
| ++ | 증가 | ++a, a++ | a 값을 1 증가 |
| -- | 감소 | --a, a-- | a 값을 1 감소 |
⚡ 산술 연산자 사용 예제
public class ArithmeticDemo {
public static void main(String[] args) {
int a = 10, b = 3;
System.out.println("a + b = " + (a + b));
System.out.println("a - b = " + (a - b));
System.out.println("a * b = " + (a * b));
System.out.println("a / b = " + (a / b)); // 3 (정수 나눗셈은 몫만)
System.out.println("a % b = " + (a % b)); // 1
int c = 5;
System.out.println(++c); // 전위 증가: 6, c=6
System.out.println(c++); // 후위 증가: 6(출력), c=7
System.out.println(c); // 7
}
}
⚠️ 산술 연산자 사용 시 주의 사항
- 정수형끼리 나누면 소수점 이하는 버려진다. (ex.
10 / 3 = 3) ➡️ 실수형으로 나누면 소수점 이하까지 계산된다.- 정수 / 정수 = 정수 (소수점 버림)
- 정수 / 실수 = 실수 or 실수 / 실수 = 실수
- 나눗셈 연산에서 0으로 나누면 ArithmeticException이 발생한다.
나눗셈에서 0으로 나누기 예외
✅ 정수형 나눗셈에서는 0으로 나누면 ArithmeticException일 발생한다.
✅ 실수형 나눗셈에서는 Infinity 또는 NaN(Not a Number) 결과가 나온다.
⚡ 증감 연산자의 전위/후위 차이
- 증감 연산자는 산술 연산자 중
++와--연산자를 의미한다. - 전위(++a, --a) : 값을 먼저 증가 혹은 감소시키고 값을 사용한다.
- 후위(a++, a--) : 값을 먼저 사용하고, 증가 혹은 감소시킨다.
int a = 5;
System.out.println(++a); // 6
System.out.println(a++); // 6 (출력 후 a=7)
System.out.println(a); // 7
📖 비교 연산자 (Comparison Operator)
- 두 값을 비교하여 참(true) 또는 거짓(false)을 반환하는 연산자이다.
- 주로 조건문에 많이 사용된다.
| 연산자 | 의미 | 예시 | 결과 |
| == | 같다 | a == b | 같으면 true |
| != | 같지 않다 | a != b | 다르면 true |
| > | 크다 | a > b | |
| < | 작다 | a < b | |
| >= | 크거나 같다 | a >= b | |
| <= | 작거나 같다 | a <= b |
⚡ 비교 연산자 사용 예제
public class ComparisonDemo {
public static void main(String[] args) {
int a = 10, b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println(a >= 10); // true
System.out.println(b <= 10); // false
}
}
⚡ 문자열 비교
- 문자열을 비교할 때에는 비교 연산자
==이 아닌,equals()메서드를 사용한다.
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true 또는 false (객체 참조 비교)
System.out.println(s1.equals(s2)); // true (값 비교)
==연산자는 객체의 "참조"를 비교한다. ➡️ 값 자체를 비교하기 위해서는equals()메서드를 사용한다.- 이로 인한 버그가 발생하는 경우가 많다.
📖 논리 연산자 (Logical Operator)
- 불리언(Boolean) 값을 다루는 연산자이다.
- 조건문과 반복문에서 많이 사용된다.
| 연산자 | 의미 | 예시 | 결과 |
| && | 그리고(AND) | a && b | 둘 다 true일 때만 true |
| || | 또는(OR) | a || b | 둘 중 하나라도 true면 true |
| ! | 부정(NOT) | !a | a가 true면 false, 반대 |
⚡ 논리 연산자 사용 예제
public class LogicalDemo {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false
}
}
⚠️ 참고) 단락 평가 (Short-Circuit Evaluation)
&&와||연산자는 왼쪽 값만으로 결과가 확정되면, 오른쪽은 평가하지 않는다.false && ...➡️ 무조건falsetrue || ...➡️ 무조건true
null체크할 때 매우 중요하게 작용한다.- ex)
if (str != null && str.length() > 0) { ... }➡️str이null이면, 두 번째 조건은 평가하지 않음 (NullPointerException 방지)
- ex)
📖 대입 연산자 (Assignment Operator)
- 변수에 값을 저장할 때 사용하는 연산자이다.
| 연산자 | 의미 | 예시 | 결과 |
| = | 대입 | a = 10 | a에 10 저장 |
| += | 더해서 대입 | a += 3 | a = a + 3 |
| -= | 빼서 대입 | a -= 2 | a = a - 2 |
| *= | 곱해서 대입 | a *= 5 | a = a * 5 |
| /= | 나눠서 대입 | a /= 4 | a = a / 4 |
| %= | 나머지 대입 | a %= 2 | a = a % 2 |
⚡ 대입 연산자 사용 예제
public class AssignmentDemo {
public static void main(String[] args) {
int a = 5;
a += 2; // a = 7
a *= 3; // a = 21
a -= 5; // a = 16
a /= 2; // a = 8
a %= 3; // a = 2
System.out.println(a);
}
}
📖 기타 연산자
⚡ 삼항(조건) 연산자
int max = (a > b) ? a : b; // a가 b보다 크면 a, 아니면 b를 max에 저장
- 코드의 가독성을 높이고 간단한 조건 분기에 매우 유용하게 사용된다.
- 복잡한 조건을 여러 번 중첩하면 가독성이 떨어지기 떄문에 "단순한 조건"에서만 사용하는 것이 권장된다.
⚡ 형변환(Casting) 연산자
int i = (int) 3.14; // 결과: 3
⚡ 비트 연산자 (Bitwise Operator)
➡️ 일반적인 연산에서는 잘 사용되지 않지만, 알고리즘, 네트워크 보안 등의 분야에서 사용된다.
int x = 5; // 00000101
int y = 3; // 00000011
System.out.println(x & y); // 1 (00000001)
System.out.println(x | y); // 7 (00000111)
&(and),|(or),^(xor),~(not),<<,>>,>>>- 정수의 각 비트 단위로 연산이 이루어진다.
- 알고리즘, 최적화 코딩, 비트마스킹 등에서 주로 사용된다.
'🖥️ Dev > Language' 카테고리의 다른 글
| [C++] C++의 변수와 상수 (0) | 2025.07.05 |
|---|---|
| [C++] C++ 프로그램 개요와 구조 (0) | 2025.07.05 |
| [Java] Java의 변수와 상수 (0) | 2025.07.04 |
| [Java] Java의 기본 데이터 타입 (1) | 2025.06.24 |
| [Java] Java의 표준 입출력 (0) | 2025.06.16 |
@청월누리 :: DevKuk 개발 블로그
since 2025.01.27. ~ 개발자를 향해....🔥