프로그래밍 언어에서 연산자(Operator)는 계산을 수행하는 기호를 의미합니다. 예를 들어, +, -, *, / 같은 산술 연산자는 많이 익숙하시죠. 자바에는 다양한 연산자가 있는데, 실무에서 주로 사용하는 것 위주로 설명드리겠습니다.
1. 연산자의 종류
1.1. 산술 연산자 (Arithmetic Operators)
숫자를 계산할 때 사용하는 기본 연산자입니다.
- + : 더하기
- - : 빼기
- * : 곱하기
- / : 나누기 (정수 나눗셈 시 소수점 이하 버림)
- % : 나머지
1.2. 증감 연산자 (Increment and Decrement)
값을 1씩 증가하거나 감소시킬 때 사용합니다.
- ++ : 1 증가
- -- : 1 감소
1.3. 비교 연산자 (Comparison Operators)
두 값을 비교하고 결과를 참(true) 또는 거짓(false)으로 반환합니다.
- == : 같다
- != : 같지 않다
- > : 크다
- < : 작다
- >= : 크거나 같다
- <= : 작거나 같다
1.4. 논리 연산자 (Logical Operators)
조건을 결합하거나 부정할 때 사용됩니다.
- && : AND (모두 참일 때만 참)
- || : OR (하나라도 참이면 참)
- ! : NOT (부정)
1.5. 대입 연산자 (Assignment Operators)
변수에 값을 할당하는 연산자입니다.
- = : 대입
- +=, -=, *=, /=, %= : 복합 대입 (예: a += 2는 a = a + 2와 동일)
1.6. 삼항 연산자 (Ternary Operator)
조건식의 결과에 따라 값을 선택하는 연산자입니다.
- ? : : 조건이 참이면 ? 이후 값을, 거짓이면 : 이후 값을 반환합니다.
2. 산술 연산자 예시 코드
다음은 자바에서 산술 연산자를 사용하는 예제입니다.
package operator;
public class Operator1 {
public static void main(String[] args) {
int a = 5;
int b = 2;
// 덧셈
int sum = a + b;
System.out.println("a + b = " + sum); // 출력: a + b = 7
// 뺄셈
int diff = a - b;
System.out.println("a - b = " + diff); // 출력: a - b = 3
// 곱셈
int multi = a * b;
System.out.println("a * b = " + multi); // 출력: a * b = 10
// 나눗셈
int div = a / b;
System.out.println("a / b = " + div); // 출력: a / b = 2
// 나머지
int mod = a % b;
System.out.println("a % b = " + mod); // 출력: a % b = 1
}
}
정수 나눗셈과 나머지 연산
위 예제에서 5 / 2의 결과는 2.5여야 하지만 정수 나눗셈이므로 소수점 이하가 버려져 2가 출력됩니다. 이를 해결하려면 형 변환을 사용하여 실수형으로 처리할 수 있습니다. 나머지 연산자 %는 나누기의 나머지를 구할 때 사용됩니다. 예를 들어, 5 % 2의 결과는 1입니다.
주의! 0으로 나누기
5 / 0과 같은 연산은 ArithmeticException 오류를 발생시킵니다. 자바는 0으로 나누기를 허용하지 않으니 주의해야 합니다.
3. 문자열 연산
자바는 문자열에도 + 연산자를 사용할 수 있습니다. 두 문자열을 더하면 문자열이 연결됩니다.
package operator;
public class Operator2 {
public static void main(String[] args) {
String result1 = "hello " + "world";
System.out.println(result1); // 출력: hello world
String s1 = "string1";
String s2 = "string2";
String result2 = s1 + s2;
System.out.println(result2); // 출력: string1string2
String result3 = "a + b = " + 10;
System.out.println(result3); // 출력: a + b = 10
int num = 20;
String str = "a + b = ";
String result4 = str + num;
System.out.println(result4); // 출력: a + b = 20
}
}
자바에서는 문자열에 다른 타입을 더하면 해당 타입이 문자열로 변환되어 연결됩니다. 즉, 숫자 10이 "10"이라는 문자열로 바뀌어 연결됩니다.
4. 연산자 우선순위
수학에서 1 + 2 * 3을 계산할 때 덧셈보다 곱셈이 우선인 것처럼, 자바도 연산자마다 우선순위가 있습니다.
package operator;
public class Operator3 {
public static void main(String[] args) {
int sum1 = 1 + 2 * 3; // 곱셈이 먼저 계산됨
int sum2 = (1 + 2) * 3; // 괄호로 우선순위 변경
System.out.println("sum1 = " + sum1); // 출력: sum1 = 7
System.out.println("sum2 = " + sum2); // 출력: sum2 = 9
}
}
위 예제에서, 곱셈이 덧셈보다 우선순위가 높기 때문에 sum1은 7이 출력됩니다. 괄호를 사용하여 덧셈을 먼저 처리하면 sum2는 9가 됩니다. 자바에서 연산자 우선순위를 바꾸려면 괄호 ()를 사용하면 됩니다.
연산자 우선순위
자바에서 높은 순서대로 연산자 우선순위는 다음과 같습니다.
- 괄호 ()
- 단항 연산자 (++, --, !, ~)
- 산술 연산자 (*, /, %가 먼저, 그다음에 +, -)
- 비교 연산자 (<, >, ==, !=)
- 논리 연산자 (&&, ||)
- 대입 연산자 (=, +=, -=, *=, /=)
5. 연산자 우선순위 암기법
실무 개발자들이 연산자 우선순위를 모두 외우진 않습니다. 대신 두 가지 원칙만 기억하면 됩니다.
상식적인 우선순위 사용: 대부분의 경우 상식적으로 +보다 *이 우선이라는 점만 기억하면 충분합니다.
애매하면 괄호 사용: 연산이 복잡하거나 애매할 때는 항상 괄호를 사용해 우선순위를 명확히 지정하세요.
6. 결론: 단순하고 명확하게
연산자 우선순위를 외우는 것보다 중요한 것은 코드를 누구나 쉽게 이해할 수 있도록 작성하는 것입니다. 연산자 우선순위가 애매할 때는 괄호를 사용하여 명확하게 처리하세요. 결국, 명확하고 유지보수하기 쉬운 코드가 가장 중요한 목표입니다.
참고
'Back-End > Java' 카테고리의 다른 글
자바 while 문을 활용한 반복문 이해 (1) | 2024.10.16 |
---|---|
자바(Java) 조건문 활용법: 기초부터 삼항 연산자까지 (1) | 2024.10.08 |
자바의 산술 연산자 이해하기 (0) | 2024.09.19 |
자바 변수 - 문제와 풀이 예제 (0) | 2024.09.18 |
자바 변수 타입 (1) | 2024.09.17 |