1. 소개
Java는 비즈니스 시스템, 웹 애플리케이션, Android 앱 개발 등 다양한 분야에서 널리 사용되는 매우 인기 있는 프로그래밍 언어입니다. Java를 배우면서 처음 마주하게 되는 기본 요소 중 하나가 바로 연산자입니다. 연산자는 프로그램에서 계산이나 비교를 수행하기 위해 사용되는 필수 기호와 규칙이며, 모든 Java 코드베이스에서 자주 등장합니다.
“Java 연산자”라는 키워드로 검색하는 많은 사람들은 다음과 같은 질문을 가지고 있을 수 있습니다:
- 연산자의 종류와 의미를 정리하고 싶다
- 연산자가 실제로 어떻게 사용되는지 구체적인 예시를 보고 싶다
- 연산자 간 차이점과 주의사항을 이해하고 싶다
이 문서는 Java에서 사용되는 주요 연산자를 체계적으로 설명하며, 기본부터 실무 적용까지 초보자도 이해하기 쉬운 방식으로 정리합니다. 또한 흔히 발생하는 오류, 중요한 고려사항, 실전 개발에 유용한 팁도 함께 요약합니다. 연산자를 마스터하는 것은 가독성이 높고 버그가 적은 코드를 작성하기 위한 첫걸음입니다.
Java를 이제 막 시작했든, 기본기를 다시 복습하든, 이 문서는 문제가 생겼을 때 찾아볼 ‘필수 레퍼런스’가 될 것입니다. 예시와 다이어그램을 통해 Java 연산자를 완전히 이해하도록 도와드리겠습니다. 끝까지 읽고 Java 연산자에 대한 숙련도를 확고히 다지세요.
2. Java 연산자 개요 (빠른 참고표 포함)
Java는 목적에 따라 분류된 다양한 연산자를 제공합니다. 여기서는 Java에서 사용되는 대표적인 연산자를 정리하여 전체 그림을 파악할 수 있도록 도와줍니다. 먼저, 각 연산자의 역할과 표기법을 한눈에 볼 수 있는 빠른 참고표를 살펴보겠습니다.
Java 연산자 빠른 참고표
| Category | Operator Examples | Main Usage | Sample Code |
|---|---|---|---|
| Arithmetic Operators | +, -, *, /, % | Numeric calculations | a + b, x % y |
| Assignment Operators | =, +=, -=, *=, /= | Assigning and updating values | x = 5, y += 2 |
| Comparison Operators | ==, !=, >, <, >=, <= | Value comparison | a == b, x >= y |
| Logical Operators | &&, ||, ! | Logical evaluation | (x > 0 && y < 10) |
| Bitwise Operators | &, |, ^, ~, <<, >>, >>> | Bit-level operations | x & y, x << 1 |
| Increment / Decrement | ++, — | Increase or decrease values | i++, –j |
| Ternary Operator | ? : | Conditional value switching | max = (a > b) ? a : b |
| Others | instanceof | Type checking | obj instanceof String |
Java 연산자는 계산, 비교, 조건 분기 등 다양한 상황에서 사용됩니다. 산술 연산자, 할당 연산자, 비교 연산자, 논리 연산자는 거의 모든 프로그램에 등장합니다.
비트 연산자, 삼항 연산자, instanceof 연산자는 다소 고급이지만, 이를 학습하면 Java에서 표현할 수 있는 범위가 크게 확장됩니다.
다음 섹션에서는 각 연산자 카테고리를 실제 예제와 함께 즉시 활용할 수 있도록 설명합니다.
3. 각 연산자 카테고리별 설명 및 실용 예제
Java는 다양한 종류의 연산자를 제공합니다. 이 섹션에서는 각 카테고리별로 사용법, 특징, 예제, 흔히 발생하는 함정 등을 자세히 설명합니다. 모든 연산자 유형의 고유한 동작을 반드시 이해하세요.
3-1. 산술 연산자 (+, -, *, /, %)
산술 연산자는 숫자 계산을 수행하는 데 사용됩니다. 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산과 같은 기본 작업의 기반이 됩니다.
+(덧셈): 두 숫자 값을 더합니다. 문자열과 함께 사용하면 연결(concatenation) 연산이 됩니다.-(뺄셈): 두 숫자 간의 차이를 계산합니다.*(곱셈): 두 숫자를 곱합니다./(나눗셈): 왼쪽 피연산자를 오른쪽 피연산자로 나눕니다. 정수 나눗셈은 소수 부분을 버립니다.%(모듈로): 나눗셈의 나머지를 반환합니다.
예제:
int a = 10;
int b = 3;
System.out.println(a + b); // 13
System.out.println(a - b); // 7
System.out.println(a * b); // 30
System.out.println(a / b); // 3 (decimal part is discarded)
System.out.println(a % b); // 1
주의사항:
int값끼리 나누면 결과는 정수이며 소수 부분이 버려집니다.- 문자열에
+연산자를 사용하면 산술 덧셈이 아니라 문자열 연결이 이루어집니다.
3-2. 할당 연산자 (=, +=, -=, *=, /=, %=)
할당 연산자는 변수에 값을 설정하거나 업데이트하는 데 사용됩니다. 복합 할당 연산자를 사용하면 코드를 더 간결하게 만들 수 있습니다.
=(할당): 오른쪽 값을 왼쪽 변수에 대입합니다.+=(덧셈 후 할당): 오른쪽 값을 현재 변수 값에 더한 뒤 다시 변수에 저장합니다.- 기타 복합 연산자로는
-=,*=,/=,%=가 있습니다.
예제:
int x = 5;
x += 3; // Equivalent to x = x + 3 → x becomes 8
x *= 2; // Equivalent to x = x * 2 → x becomes 16
핵심 포인트:
- 복합 할당 연산자는 반복 계산이나 루프 연산에서 특히 유용합니다.
3-3. 비교 연산자 (==, !=, >, <, >=, <=) 및 instanceof
비교 연산자는 값이 지정된 조건을 만족하는지 확인합니다.
==(동등): 두 값이 같은지 확인합니다.!=(다름): 두 값이 다른지 확인합니다.>,<,>=,<=: 크기 비교.instanceof: 객체가 특정 타입의 인스턴스인지 확인합니다.
예시:
int a = 5, b = 7;
System.out.println(a == b); // false
System.out.println(a < b); // true
String str = "hello";
System.out.println(str instanceof String); // true
중요 참고:
- 문자열이나 객체의 내용을 비교하려면
equals()를 사용하세요.==연산자는 레퍼런스(같은 인스턴스를 가리키는지)를 비교합니다.
3-4. 논리 연산자 (&&, ||, !)
복합 조건을 평가해야 할 때 논리 연산자를 사용합니다.
&&(AND): 두 조건이 모두 true일 때만 true를 반환합니다.||(OR): 하나 이상의 조건이 true이면 true를 반환합니다.!(NOT): 불리언 값을 반전시킵니다.
예시:
int age = 20;
boolean isMember = true;
System.out.println(age >= 18 && isMember); // true
System.out.println(!(age < 18)); // true
단락 평가 (Short-circuit evaluation):
&&와||는 왼쪽 조건이 이미 결과를 결정하면 오른쪽을 평가하지 않습니다.
3-5. 비트 연산자 (&, |, ^, ~, <<, >>, >>>)
비트 연산자는 정수 값을 비트 수준에서 조작합니다. 시스템 개발이나 성능이 중요한 처리에 유용합니다.
&(AND): 두 비트가 모두 1일 때만 1을 반환합니다.|(OR): 어느 한 비트가 1이면 1을 반환합니다.^(XOR): 비트 중 하나만 1일 때 1을 반환합니다.~(NOT): 모든 비트를 반전시킵니다.<<(Left Shift): 비트를 왼쪽으로 이동시킵니다.>>(Right Shift): 부호 있는 오른쪽 이동.>>>(Unsigned Right Shift): 부호 없는 오른쪽 이동.
예시:
int x = 5; // 0101
int y = 3; // 0011
System.out.println(x & y); // 1 (0001)
System.out.println(x | y); // 7 (0111)
System.out.println(x ^ y); // 6 (0110)
System.out.println(~x); // -6
System.out.println(x << 1); // 10
3-6. 증감 연산자 (++, –)
이 연산자는 변수 값을 1씩 증가하거나 감소시킵니다. 전위 증감과 후위 증감은 동작이 다릅니다.
++: 1 증가합니다.--: 1 감소합니다.
예시:
int i = 0;
i++; // i becomes 1
++i; // i becomes 2
전위 vs 후위:
++i는 먼저 증가하고 값을 반환합니다.i++는 현재 값을 반환한 뒤 증가합니다.
3-7. 삼항 연산자 (? 🙂
삼항 연산자를 사용하면 조건 로직을 한 줄로 간결하게 작성할 수 있습니다.
구문:
condition ? value_if_true : value_if_false
예시:
int max = (a > b) ? a : b;
팁:
- 코드를 간결하게 만들 수 있지만 복잡한 조건에 남용하지 않도록 합니다.
4. 연산자 우선순위와 결합법칙
같은 식에 여러 연산자가 나타날 때, Java는 “연산자 우선순위”라 불리는 규칙에 따라 평가합니다. 또한, 동일한 우선순위를 가진 연산자가 함께 있을 경우, 평가 순서는 “결합법칙(Associativity)”에 의해 결정됩니다.
이 규칙을 오해하면 코드가 예상치 못한 결과나 버그를 일으킬 수 있습니다.
4-1. 연산자 우선순위 표
다음 표는 우선순위에 따라 정렬된 주요 Java 연산자를 나열합니다. 숫자가 작을수록 우선순위가 높습니다.
| Precedence | Operators | Main Usage | Associativity |
|---|---|---|---|
| 1 | () | Grouping with parentheses | Left to Right |
| 2 | ++, --, !, ~, +, - | Unary operators | Right to Left |
| 3 | *, /, % | Multiplication, division, remainder | Left to Right |
| 4 | +, - | Addition, subtraction | Left to Right |
| 5 | <<, >>, >>> | Shift operations | Left to Right |
| 6 | <, <=, >, >=, instanceof | Comparison and type checking | Left to Right |
| 7 | ==, != | Equality and inequality | Left to Right |
| 8 | & | Bitwise AND | Left to Right |
| 9 | ^ | Bitwise XOR | Left to Right |
| 10 | | | Bitwise OR | Left to Right |
| 11 | && | Logical AND | Left to Right |
| 12 | || | Logical OR | Left to Right |
| 13 | ? : | Ternary (conditional) operator | Right to Left |
| 14 | =, +=, -=, other assignment operators | Assignment | Right to Left |
4-2. 우선순위와 결합법칙 시각화
다음 식을 고려해 보세요:
int result = 2 + 3 * 4;
*(곱셈)이 +(덧셈)보다 우선순위가 높으므로, 곱셈이 먼저 평가됩니다:
3 * 4 = 12,
그 다음 2 + 12 = 14.
4-3. 괄호를 사용해 우선순위를 명시적으로 제어하기
When an expression becomes complex or you want to ensure clarity, always use parentheses () to explicitly control the order of evaluation.
예시:
int result = (2 + 3) * 4; // 2+3 is evaluated first → result becomes 20
4-4. 흔히 저지르는 실수와 중요한 주의사항
- 연산자 우선순위에 대한 잘못된 가정은 예상치 못한 결과를 초래할 수 있습니다.
예시:
boolean flag = a > 0 && b < 10 || c == 5;- 왜냐하면
&&가||보다 높은 우선순위를 가지므로, 이 표현식은(a > 0 && b < 10) || c == 5와 동일합니다. - 버그를 방지하려면, 복잡한 표현식에는 항상 괄호를 사용하세요.
- 왜냐하면
Operator precedence and associativity often confuse beginners, but once you understand the rules, you will be able to write far more predictable and reliable Java code.
연산자 우선순위와 결합법칙은 초보자를 혼란스럽게 하지만, 규칙을 이해하면 훨씬 더 예측 가능하고 안정적인 Java 코드를 작성할 수 있습니다.
5. 흔히 발생하는 오류와 자주 마주치는 함정
Although Java operators may seem simple, both beginners and intermediate developers often encounter unexpected behaviors and subtle mistakes. This section summarizes common real-world errors and typical pitfalls related to operators.
Java 연산자는 단순해 보일 수 있지만, 초보자와 중급 개발자 모두가 예상치 못한 동작과 미묘한 실수를 자주 겪습니다. 이 섹션에서는 연산자와 관련된 일반적인 실제 오류와 전형적인 함정을 요약합니다.
5-1. 정수 나눗셈에서 예상치 못한 결과
When dividing two int values in Java, the result is always an integer—any decimal portion is discarded.
Java에서 두 개의 int 값을 나누면 결과는 항상 정수이며, 소수 부분은 버려집니다.
int a = 5;
int b = 2;
System.out.println(a / b); // Output: 2
If you want a decimal result, cast one of the operands to double (or float):
소수 결과가 필요하면 피연산자 중 하나를 double(또는 float)로 형변환하세요:
System.out.println((double)a / b); // Output: 2.5
5-2. 부동소수점 정밀도 문제
Using double or float may introduce subtle rounding errors.
double이나 float를 사용하면 미묘한 반올림 오류가 발생할 수 있습니다.
double d = 0.1 + 0.2;
System.out.println(d); // Output example: 0.30000000000000004
For calculations requiring strict accuracy (e.g., financial values), use BigDecimal instead.
엄격한 정확도가 요구되는 계산(예: 금융 값)에서는 대신 BigDecimal을 사용하세요.
5-3. ==와 equals()의 차이
A very common mistake is misunderstanding the difference between == and equals() when comparing objects such as strings.
객체(예: 문자열)를 비교할 때 ==와 equals()의 차이를 오해하는 것이 매우 흔한 실수입니다.
==: 두 레퍼런스가 같은 인스턴스를 가리키는지 비교합니다.equals(): 객체의 실제 내용(값 또는 텍스트)을 비교합니다.String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1 == s2); // false (different instances) System.out.println(s1.equals(s2)); // true (contents are identical)
5-4. 단락 평가(short‑circuit evaluation)로 인한 부작용 손실
Logical operators && and || use “short‑circuit evaluation,” meaning the right‑side expression is skipped when the result is already determined by the left side.
논리 연산자 &&와 ||는 “단락 평가”를 사용합니다. 즉, 왼쪽에서 결과가 이미 결정되면 오른쪽 표현식은 건너뛰게 됩니다.
Without understanding this behavior, expected side effects (like variable updates or method calls) may never occur.
이 동작을 이해하지 못하면, 변수 업데이트나 메서드 호출과 같은 기대된 부작용이 발생하지 않을 수 있습니다.
int a = 0;
if (a != 0 && 10 / a > 1) {
// This block is never executed
}
Here, since a != 0 is false, the expression 10 / a is never evaluated, avoiding a division‑by‑zero error.
여기서 a != 0이 거짓이므로, 10 / a 표현식은 평가되지 않아 0으로 나누는 오류를 피할 수 있습니다.

5-5. 괄호 누락으로 인한 잘못된 논리
Leaving out parentheses in complex conditional expressions often leads to wrong evaluations because of precedence misunderstanding.
복잡한 조건식에서 괄호를 빼면 우선순위 오해로 인해 잘못된 평가가 자주 발생합니다.
boolean flag = a > 0 && b < 10 || c == 5;
// Intended meaning: ((a > 0) && (b < 10)) || (c == 5)
// But depending on context, interpretation may differ
5-6. 요약
- 데이터 타입(int vs double)과 비교 방법(== vs equals)을 항상 확인하세요.
- 복잡한 표현식에는 괄호를 사용하는 습관을 들이세요.
- 단락 평가와 같은 Java 고유 동작을 인지하세요.
By keeping these points in mind, you can significantly reduce typical operator‑related bugs in Java.
이러한 점들을 기억하면 Java에서 흔히 발생하는 연산자 관련 버그를 크게 줄일 수 있습니다.
6. 실용 예제: 연산자를 활용한 샘플 코드
This section introduces practical sample code demonstrating how Java operators are used in real development scenarios. These examples highlight common use cases that help deepen understanding and improve practical skills.
이 섹션에서는 실제 개발 상황에서 Java 연산자가 어떻게 사용되는지를 보여주는 실용적인 샘플 코드를 소개합니다. 이러한 예제들은 이해를 깊게 하고 실무 능력을 향상시키는 일반적인 사용 사례를 강조합니다.
6-1. if 문에서 비교 및 논리 연산자 사용
Comparison and logical operators are essential when combining multiple conditions for branching.
비교 연산자와 논리 연산자는 분기 조건을 여러 개 결합할 때 필수적입니다.
int age = 25;
boolean isMember = true;
if (age >= 18 && isMember) {
System.out.println("Service is available.");
} else {
System.out.println("Conditions not met.");
}
6-2. 루프에서 증감 연산자 사용
증가(++) 및 감소(–) 연산자는 루프 처리에서 카운터를 제어할 때 자주 사용됩니다.
for (int i = 0; i < 5; i++) {
System.out.println("Count: " + i);
}
6-3. 삼항 연산자를 이용한 조건부 할당 간소화
삼항 연산자를 사용하면 전체 if 문을 작성하지 않고도 값을 할당할 수 있습니다.
int score = 75;
String result = (score >= 60) ? "Pass" : "Fail";
System.out.println(result); // Pass
6-4. 복합 할당 연산자를 이용한 코드 간소화
복합 할당 연산자는 변수 값을 반복적으로 업데이트할 때 유용합니다.
int total = 0;
for (int n = 1; n <= 10; n++) {
total += n; // Equivalent to total = total + n
}
System.out.println("Total: " + total);
6-5. 실용적인 비트 연산자 예시: 플래그 관리
비트 연산은 여러 ON/OFF 플래그를 효율적으로 관리할 때 유용합니다.
int FLAG_READ = 1; // 0001
int FLAG_WRITE = 2; // 0010
int FLAG_EXEC = 4; // 0100
int permission = FLAG_READ | FLAG_WRITE; // 0011
// Check if write permission exists
if ((permission & FLAG_WRITE) != 0) {
System.out.println("Write permission granted.");
}
6-6. 실제 시나리오에서 여러 연산자 결합
조건이 복잡해질 경우, 괄호를 사용하여 모호성을 방지하세요.
int a = 3, b = 7, c = 5;
if ((a < b && b > c) || c == 5) {
System.out.println("Condition satisfied.");
}
6-7. 가독성 높은 코드 작성 팁
- 복잡한 식을 더 작고 가독성 높은 부분으로 나누세요.
- 괄호를 사용하여 평가 순서를 명시적으로 명확히 하세요.
- 변수에 의미 있는 이름을 붙이고, 의도를 명확히 전달하는 주석을 작성하세요.
이 샘플 프로그램들을 직접 실행해 보면 연산자에 대한 이해가 깊어집니다. 연산자를 자유롭게 활용할 수 있게 되면 Java 개발이 더욱 효율적이고 즐거워집니다.
7. 요약
지금까지 Java에서 사용되는 주요 연산자들을 기본 개념부터 실용적인 적용까지 다루었습니다. 연산자는 프로그램 내에서 계산, 평가, 데이터 조작을 수행하는 데 필수적입니다. 연산자를 올바르게 이해하고 사용하면 보다 효율적이고 오류 없는 코딩이 가능합니다.
7-1. 이 글 요약
- Java는 산술, 할당, 비교, 논리, 비트, 삼항, 증감, 그리고
instanceof와 같은 다양한 연산자 유형을 제공하며, 각각은 서로 다른 목적과 동작을 가집니다. - 연산자 우선순위, 결합성, 단락 평가와 같은 Java 고유 규칙을 알면 예상치 못한 버그를 방지할 수 있습니다.
if문, 루프, 조건 분기와 같은 실용적인 예제를 통해 학습하면 이해도가 깊어집니다.- 데이터 타입 혼동이나 객체 비교 시
==대신equals()를 사용하는 등 흔히 발생하는 오류를 인식하는 것이 중요합니다.
7-2. 학습 조언
연산자의 동작을 배우는 가장 효과적인 방법은 직접 코드를 작성하고 실행해 보는 것입니다. 이 글에서 소개한 샘플 코드를 입력하고 실행해 보면서 동작을 직접 체험해 보세요.
질문이나 의문이 생길 때마다 문서나 신뢰할 수 있는 기술 자료를 찾아보는 습관을 들이면 이해를 강화할 수 있습니다.
Java 연산자의 기본을 마스터하면 모든 Java 프로그램 작업 시 자신감을 얻을 수 있습니다. 이 지식을 활용해 지속적인 학습과 개발에 도움이 되도록 하세요.
8. FAQ (자주 묻는 질문)
이 섹션은 학습자와 현업 개발자를 위한 Java 연산자에 관한 일반적인 질문들을 다룹니다. 이 답변들을 활용하여 이해를 강화하고 의문을 빠르게 해결하세요.
Q1. 문자열을 연결하는 데 사용되는 연산자는 무엇인가요?
A1. 문자열 연결에는 + 연산자를 사용합니다. 예를 들어, "Hello" + " World"는 "Hello World"가 됩니다. 문자열과 숫자를 연결하면 결과는 문자열이 됩니다.
Q2. == 연산자와 equals() 메서드의 차이점은 무엇인가요?
A2.
==는 두 레퍼런스가 동일한 객체 인스턴스를 가리키는지 비교합니다.equals()는 객체 내부의 내용을 비교합니다.
String과 같은 객체의 값을 비교하려면 항상 equals()를 사용하세요.
Q3. 전위 (++i)와 후위 (i++) 증감 연산자의 차이점은 무엇인가요?
A3.
- 전위 (
++i): 값을 먼저 증가시키고, 그 후에 증가된 값을 반환합니다. - 후위 (
i++): 현재 값을 먼저 반환하고, 그 후에 값을 증가시킵니다.int i = 5; System.out.println(++i); // Outputs 6 System.out.println(i++); // Outputs 6, then i becomes 7
Q4. 논리 연산자에서 단락 평가(short-circuit evaluation)란 무엇인가요?
A4. &&와 ||와 같은 논리 연산자는 왼쪽 피연산자가 이미 최종 결과를 결정하면 오른쪽 피연산자의 평가를 건너뜁니다. 이는 불필요한 연산을 방지하고, 0으로 나누는 오류와 같은 잠재적 오류를 피하게 해줍니다.
Q5. 연산자 우선순위를 명시적으로 변경하려면 어떻게 해야 하나요?
A5. 괄호 ()를 사용합니다. 괄호는 괄호 안의 부분을 먼저 평가하도록 강제하여 복잡한 식을 더 명확하고 안전하게 만들 수 있습니다.
int result = (2 + 3) * 4; // 2+3 is evaluated first
Q6. 비트 연산자는 어떤 상황에서 유용하게 사용될 수 있나요?
A6. 비트 연산자는 다음과 같은 경우에 도움이 됩니다.
- 플래그 관리
- 하드웨어 수준 제어
- 성능 최적화 계산
예를 들어, 여러 ON/OFF 상태를 하나의 정수에 효율적으로 저장할 수 있습니다.
Q7. Java에서 직접 연산자를 정의할 수 있나요?
A7. Java는 C++처럼 새로운 연산자를 정의하거나 연산자 오버로드를 지원하지 않습니다. 대신, 자체 메서드를 만들어 동일한 동작을 구현할 수 있습니다.
학습을 진행하면서 다른 질문이 생길 수 있습니다. 그럴 때는 공식 문서나 신뢰할 수 있는 학습 자료를 참고하여 이해를 깊게 하세요.
9. 참고 링크 및 공식 외부 자료
Java 연산자를 더 깊이 탐구하거나 공식 사양을 확인하고 싶은 독자를 위해 신뢰할 수 있는 참고 자료와 학습 리소스를 모았습니다. 이 링크들은 실제 개발이나 조사 시에도 유용합니다.
9-1. 공식 문서
- Java SE Documentation (English, Official) 연산자 사양, 평가 규칙 및 표현식 동작에 대한 포괄적인 상세 정보.
- Java Platform SE 8 API Documentation (English, Official) 상세한 클래스와 메서드 정보를 찾을 때 유용합니다.
9-2. 유용한 외부 학습 자료
- Dotinstall – Java Basics (Japanese) Java 기본을 다루는 초보자 친화적인 동영상 튜토리얼.
- Progate – Java Course (Japanese) Java 기본을 인터랙티브하게 연습할 수 있는 실습형 학습 플랫폼.
- Qiita – Java Tag Article List (Japanese) 실용적인 팁, 예제 및 최신 커뮤니티 지식을 포함합니다.
9-3. 더 공부하고 싶은 분들을 위해
사용 시 주의사항
위 링크들은 2025년 5월 현재 주요 학습 자료와 공식 참고 문서입니다. 내용과 URL은 향후 변경될 수 있으므로 정기적으로 최신 정보를 확인하시기 바랍니다. 이 자료와 본 문서를 함께 활용하면 Java 연산자에 대한 이해를 더욱 깊게 하고 실무 개발 역량을 향상시킬 수 있습니다.
