5.2 산술 연산자 (Arithmetic Operators)
수학 시간에 배운 사칙연산(+, -, *, /)을 프로그램에서 어떻게 사용하는지 알아봅니다.
그리고 수학에는 없지만 프로그래밍에서 매우 중요한 나머지 연산자(%)의 비밀도 파헤쳐 봅시다. ➗
1. 사칙연산과 나머지 🧮
1) 기본 연산자
자바는 5가지 기본 산술 연산자를 제공합니다.
| 연산자 | 이름 | 설명 | 예시 (a=10, b=3) | 결과 |
|---|---|---|---|---|
+ |
더하기 | 값을 더합니다. | 10 + 3 |
13 |
- |
빼기 | 값을 뺍니다. | 10 - 3 |
7 |
* |
곱하기 | 값을 곱합니다. (x 아님) |
10 * 3 |
30 |
/ |
나누기 (몫) | 나누고 난 몫을 구합니다. | 10 / 3 |
3 (3.333 아님!) |
% |
나머지 | 나누고 난 나머지를 구합니다. | 10 % 3 |
1 |
2) 산술 기계 (계산 과정 시각화)
flowchart LR
Input1([입력값 A: 10]) --> Machine{산술 연산 기계}
Input2([입력값 B: 3]) ---> Machine
Machine -- "+" --> Plus[더하기: 13]
Machine -- "-" --> Minus[빼기: 7]
Machine -- "*" --> Mult[곱하기: 30]
Machine -- "/" --> Div[몫: 3]
Machine -- "%" --> Mod[나머지: 1]
style Machine fill:#fed,stroke:#333,stroke-width:2px
style Input1 fill:#fff,stroke:#333
style Input2 fill:#fff,stroke:#333
style Div fill:#bfb,stroke:#333
style Mod fill:#ff9,stroke:#333
- 용도:
/: 빵 10개를 3명에게 똑같이 나눠줄 때 한 사람이 받는 개수%: 다 나눠주고 남은 빵의 개수 (짝수/홀수 판별, 배수 확인 등에 필수!)

2. 주의: 정수 나눗셈의 함정 ⚠️
프로그래밍 초보자가 가장 많이 하는 실수입니다. 정수끼리 나누면 결과도 무조건 정수(몫)가 나옵니다. 소수점은 과감히 버려집니다.
int a = 10;
int b = 4;
System.out.println(a / b); // 출력: 2 (2.5가 아님!)
해결 방법 ✅
소수점까지 정확하게 계산하려면, 숫자 중 최소한 하나는 실수(double)여야 합니다.
System.out.println(10 / 4.0); // 2.5 (성공)
System.out.println(10.0 / 4); // 2.5 (성공)
System.out.println((double)10 / 4); // 2.5 (강제 변환 후 계산)
3. 문자열 더하기 (연결) 🔗
+ 연산자는 숫자를 더하는 기능뿐만 아니라, 글자를 이어 붙이는 풀(Glue) 역할도 합니다.
1) 개념
문자열이 하나라도 섞여 있으면, 나머지 숫자들도 모두 문자열로 변해서 이어 붙습니다.
graph LR
Str["String 'JDK'"] -- + --> Num[int 21]
Num --> Result["String 'JDK21'"]
style Str fill:#f9f,stroke:#333
style Num fill:#cef,stroke:#333
style Result fill:#ff9,stroke:#333
2) 코드 예시
String str1 = "JDK" + 21; // "JDK21"
String str2 = "3" + 3.0; // "33.0" (숫자 6.0 아님!)
String str3 = "A" + "B"; // "AB"
우선순위 주의: 앞에서부터 순서대로 계산됩니다.
System.out.println(1 + 2 + "3");👉"33"(1+2=3, 3+”3”=”33”)System.out.println("1" + 2 + 3);👉"123"(“1”+2=”12”, “12”+3=”123”)
서브목차