dev.syw

산술/비교/논리/대입 연산자와 삼항 연산자, 형변환과 오버플로를 다룬다.

연산자와 형변환

연산자는 값을 계산하거나 비교할 때 사용하는 기호입니다. 변수에 담긴 값을 더하고, 비교하고, 조건을 조합하는 모든 일이 연산자를 통해 이루어집니다. 여기에 타입을 바꾸는 형변환까지 익히면 기본적인 계산 로직을 자유롭게 짤 수 있습니다.

학습 목표

  • 산술, 비교, 논리, 대입 연산자를 구분해 사용한다.
  • 증감 연산자와 삼항 연산자의 동작을 이해한다.
  • 형변환(캐스팅)의 자동/명시 방식을 안다.
  • 오버플로가 왜 생기는지 이해한다.

산술 연산자

기본적인 사칙연산과 나머지 연산을 제공합니다.

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 / 33.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을 반환하고, 논리 연산자 &&, ||, !로 조합합니다.
  • 복합 대입(+=)과 증감(++)으로 간결하게 표현할 수 있습니다.
  • 삼항 연산자는 간단한 분기를 한 줄로 만듭니다.
  • 큰 타입을 작은 타입에 담으려면 명시적 캐스팅이 필요하며 값 손실과 오버플로에 주의합니다.

연습문제

  1. 두 정수 17과 5의 몫과 나머지를 각각 출력하세요.
  2. 점수가 90 이상이면 "A", 아니면 "B"를 삼항 연산자로 출력하세요.
  3. double 3.7int로 캐스팅한 결과와 Math.round 결과를 비교 출력하세요.
  4. Integer.MAX_VALUE에 1을 더했을 때 오버플로가 발생하는 것을 출력으로 확인하세요.

힌트 — 몫은 /, 나머지는 %입니다. Math.round는 long을 반환합니다.

💡 연습문제 풀이

불러오는 중…

함께 보면 좋은 자료

댓글 0

Java” 강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.