산술/비교/논리/대입 연산자와 삼항 연산자, 형변환과 오버플로를 다룬다.
연산자와 형변환
연산자는 값을 계산하거나 비교할 때 사용하는 기호입니다. 변수에 담긴 값을 더하고, 비교하고, 조건을 조합하는 모든 일이 연산자를 통해 이루어집니다. 여기에 타입을 바꾸는 형변환까지 익히면 기본적인 계산 로직을 자유롭게 짤 수 있습니다.
학습 목표
- 산술, 비교, 논리, 대입 연산자를 구분해 사용한다.
- 증감 연산자와 삼항 연산자의 동작을 이해한다.
- 형변환(캐스팅)의 자동/명시 방식을 안다.
- 오버플로가 왜 생기는지 이해한다.
산술 연산자
기본적인 사칙연산과 나머지 연산을 제공합니다.
int a = 10, 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 (정수 나눗셈)
System.out.println(a % b); // 1 (나머지)
⚠️ 주의 — 정수끼리 나누면 소수점이 버려집니다.
10 / 3은3.33이 아니라3입니다. 실수 결과가 필요하면10.0 / 3처럼 한쪽을 실수로 만드세요.
비교와 논리 연산자
비교 연산자는 결과로 boolean을 돌려주고, 논리 연산자는 그 결과들을 조합합니다.
int score = 85;
System.out.println(score >= 80); // true
System.out.println(score == 100); // false
System.out.println(score != 0); // true
boolean pass = score >= 60 && score <= 100; // 그리고
boolean special = score == 100 || score == 0; // 또는
boolean notPass = !pass; // 부정
| 연산자 | 의미 |
|---|---|
==, != | 같다 / 다르다 |
>, <, >=, <= | 대소 비교 |
&& | 그리고(AND) |
|| | 또는(OR) |
! | 부정(NOT) |
대입과 증감 연산자
대입 연산자는 계산과 대입을 한 번에 합니다. 증감 연산자는 1을 더하거나 뺍니다.
int n = 10;
n += 5; // n = n + 5 → 15
n -= 3; // 12
n *= 2; // 24
int i = 5;
i++; // 6 (후위 증가)
++i; // 7 (전위 증가)
i--; // 6
삼항 연산자
조건 ? 참일때값 : 거짓일때값 형태로 간단한 분기를 한 줄로 표현합니다.
int score = 75;
String result = score >= 60 ? "합격" : "불합격";
System.out.println(result); // 합격
int a = 8, b = 5;
int max = a > b ? a : b; // 8
형변환 (캐스팅)
작은 타입에서 큰 타입으로는 자동으로 변환됩니다. 반대로 큰 타입을 작은 타입에 담으려면 명시적 캐스팅이 필요합니다.
int i = 100;
double d = i; // 자동 변환 (int → double)
double pi = 3.99;
int truncated = (int) pi; // 명시 변환 → 3 (소수점 버림)
long big = 10000000000L;
int small = (int) big; // 명시 변환 (값 손실 가능)
💡 TIP —
(int)캐스팅은 반올림이 아니라 소수점 이하를 버립니다. 반올림이 필요하면Math.round()를 사용하세요.
오버플로
각 타입은 표현할 수 있는 범위가 정해져 있습니다. 범위를 넘으면 값이 한 바퀴 돌아 엉뚱한 값이 됩니다.
int max = Integer.MAX_VALUE; // 2147483647
System.out.println(max + 1); // -2147483648 (오버플로!)
long safe = (long) max + 1; // 2147483648 (long으로 처리)
큰 수를 다룰 때는 long을 쓰거나, 연산 전에 타입을 넓히는 것이 안전합니다.
요약
- 정수 나눗셈은 소수점을 버리므로 실수 결과가 필요하면 한쪽을 실수로 만듭니다.
- 비교 연산자는
boolean을 반환하고, 논리 연산자&&,||,!로 조합합니다. - 복합 대입(
+=)과 증감(++)으로 간결하게 표현할 수 있습니다. - 삼항 연산자는 간단한 분기를 한 줄로 만듭니다.
- 큰 타입을 작은 타입에 담으려면 명시적 캐스팅이 필요하며 값 손실과 오버플로에 주의합니다.
연습문제
- 두 정수 17과 5의 몫과 나머지를 각각 출력하세요.
- 점수가 90 이상이면 "A", 아니면 "B"를 삼항 연산자로 출력하세요.
double 3.7을int로 캐스팅한 결과와Math.round결과를 비교 출력하세요.Integer.MAX_VALUE에 1을 더했을 때 오버플로가 발생하는 것을 출력으로 확인하세요.
힌트 — 몫은
/, 나머지는%입니다.Math.round는 long을 반환합니다.
💡 연습문제 풀이
불러오는 중…
댓글 0
“Java” 강좌에 대한 댓글입니다.