Java 연산자 정리: 산술, 비교, 논리, 증감, 대입 연산자

Alchemist·2026년 10월 7일

KT AIVLE

목록 보기
61/130

변수에 값을 저장했다면 다음 단계는 그 값을 계산하고 비교하는 것이다. Java의 연산자는 숫자 계산뿐 아니라 조건식 작성, 문자열 연결, 값 변경 등 거의 모든 코드에서 사용된다.

산술 연산자

가장 기본적인 연산자는 다음 다섯 가지다.

연산자의미
+덧셈
-뺄셈
*곱셈
/나눗셈
%나머지
int price = 12000;
int quantity = 3;

int total = price * quantity;
System.out.println(total);
36000

정수 나눗셈에 주의하기

int result = 5 / 2;
System.out.println(result);

결과는 2.5가 아니라 다음과 같다.

2

int / int의 결과도 int이기 때문에 소수점 이하가 버려진다.

소수 결과가 필요하면 피연산자 중 하나를 실수형으로 바꿔야 한다.

double result = 5.0 / 2;
System.out.println(result);
2.5

0으로 나누기

정수는 0으로 나눌 수 없다.

int result = 10 / 0;

실행하면 ArithmeticException이 발생한다.

사용자의 입력값으로 나눗셈을 수행한다면 분모가 0인지 먼저 확인해야 한다.

문자열 연결

+는 문자열을 연결할 때도 사용한다.

String product = "Keyboard";
int count = 2;

System.out.println(product + " x " + count);
Keyboard x 2

문자열과 다른 타입을 +로 연결하면 문자열 변환이 일어난다.

System.out.println("total=" + 100 + 200);

결과:

total=100200

왼쪽부터 평가되며 이미 문자열이 만들어졌기 때문이다.

계산 결과를 붙이고 싶다면 괄호를 사용한다.

System.out.println("total=" + (100 + 200));
total=300

연산자 우선순위

int result = 2 + 3 * 4;

곱셈이 먼저 계산되므로 결과는 14다.

하지만 복잡한 식에서는 우선순위를 외우기보다 괄호로 의도를 표현하는 편이 낫다.

int result = (2 + 3) * 4;

증감 연산자

값을 1 증가시키거나 감소시킬 때 사용한다.

int page = 1;
page++;
System.out.println(page);
2

감소는 --다.

page--;

전위와 후위

int a = 1;
int b = ++a;

먼저 a를 증가시키고 그 값을 b에 대입한다.

반면 다음 코드는 다르다.

int a = 1;
int b = a++;

기존 a 값을 b에 먼저 사용한 뒤 a가 증가한다.

단독 문장으로 사용할 때는 큰 차이가 없다.

count++;

복잡한 표현식 안에서 증감 연산자를 섞으면 읽기 어려워질 수 있으므로 주의하는 것이 좋다.

비교 연산자

비교 연산자의 결과는 항상 boolean이다.

int stock = 5;

System.out.println(stock > 0);
System.out.println(stock == 0);
true
false

대표 연산자:

==  같다
!=  다르다
>   크다
<   작다
>=  크거나 같다
<=  작거나 같다

문자열은 equals()로 비교하기

다음 코드는 문자열의 내용 비교 용도로 사용하면 안 된다.

String role = "ADMIN";

if (role == "ADMIN") {
    // ...
}

==는 참조가 같은지 비교한다.

문자열의 내용이 같은지 확인하려면 equals()를 사용한다.

if (role.equals("ADMIN")) {
    System.out.println("관리자");
}

변수가 null일 가능성이 있다면 상수를 앞에 두는 방식도 사용할 수 있다.

if ("ADMIN".equals(role)) {
    System.out.println("관리자");
}

논리 연산자

AND &&

모든 조건이 참일 때만 참이다.

boolean canPurchase = isLoggedIn && stock > 0;

OR ||

하나라도 참이면 참이다.

boolean canEdit = isOwner || isAdmin;

NOT !

참과 거짓을 반대로 바꾼다.

boolean guest = !isLoggedIn;

&&와 ||는 단락 평가(short-circuit evaluation) 를 사용한다. 앞 조건만으로 결과가 결정되면 뒤 조건을 평가하지 않는다.

대입 연산자

int total = 100;
total = total + 50;

축약 대입 연산자를 사용하면 다음처럼 쓸 수 있다.

total += 50;

그 밖에도 다음이 있다.

value -= 10;
value *= 2;
value /= 3;
value %= 2;

나머지 연산자는 어디에 쓸까?

%는 단순히 나머지를 구하는 데서 끝나지 않는다.

int orderNumber = 27;
boolean isEven = orderNumber % 2 == 0;

홀짝 판별뿐 아니라 주기적인 작업, 페이지 그룹 계산, 특정 간격으로 로직을 실행할 때도 자주 등장한다.

비교 결과 자체도 값이다

int stock = 5;
boolean purchasable = stock > 0;

stock > 0이라는 비교식의 결과는 true 또는 false이므로 그대로 boolean 변수에 저장할 수 있다.

이 관점에 익숙해지면 조건문도 더 단순하게 읽을 수 있다.

if (purchasable) {
    System.out.println("구매 가능");
}

=과 ==를 반드시 구분하기

int count = 10;

=는 값을 넣는 대입 연산자다.

boolean same = count == 10;

==는 두 값을 비교하는 동등 비교 연산자다.

초보 단계에서 자주 섞이는 기호라서 코드를 읽을 때 "대입인지 비교인지"를 의식적으로 구분하는 습관이 좋다.

문자열 +는 왼쪽부터 해석되는 점을 주의한다

System.out.println("합계: " + 10 + 20);

결과는 다음과 같다.

합계: 1020

먼저 문자열과 10이 결합되어 "합계: 10"이 되고, 그 다음 20도 문자열로 연결되기 때문이다.

숫자 계산을 먼저 하고 싶다면 괄호를 사용한다.

System.out.println("합계: " + (10 + 20));
합계: 30

논리 연산에서는 단락 평가도 알아두자

&&와 ||는 필요한 경우 오른쪽 식을 아예 평가하지 않는다.

String token = null;

if (token != null && token.length() > 10) {
    System.out.println("긴 토큰");
}

첫 번째 조건 token != null이 거짓이면 && 전체가 이미 거짓이므로 token.length()를 실행하지 않는다. 이를 short-circuit evaluation(단락 평가) 이라고 한다.

조건의 순서를 잘 잡으면 불필요한 연산을 줄이는 것뿐 아니라 NullPointerException 같은 문제를 피하는 데도 도움이 된다.

증감 연산자는 다른 표현식과 섞을수록 읽기 어려워진다

int index = 1;
int result = index++;

후위 증가 때문에 result는 1, index는 2가 된다.

문법은 맞지만 복잡한 식 안에 전위/후위 증감을 섞으면 실수가 늘기 쉽다.

index++;
int result = index;

가능하다면 의도를 여러 문장으로 나눠 표현하는 쪽이 유지보수에 유리하다.

비트 연산자는 우선순위를 낮춰도 된다

Java에는 &, |, ^, ~, <<, >>, >>> 같은 비트 연산자도 있다. 저수준 데이터 처리, 플래그, 네트워크/파일 포맷 등에서는 중요하지만 일반적인 웹 애플리케이션 입문 단계에서는 산술·비교·논리·대입 연산자를 먼저 확실히 익히는 편이 효율적이다.

필요할 때 공식 문서와 실제 사용 사례를 다시 찾아보는 방식으로 학습 우선순위를 조절해도 된다.

핵심 정리

  • +, -, *, /, %는 기본 산술 연산자다.
  • int / int의 결과는 정수이며 소수점 이하가 사라진다.
  • 문자열에 +를 사용하면 문자열 연결이 일어난다.
  • 복잡한 연산식은 괄호를 사용해 의도를 분명히 하는 것이 좋다.
  • ++, --는 값을 1씩 증가하거나 감소시킨다.
  • 비교 연산자의 결과는 boolean이다.
  • 문자열의 내용 비교는 ==가 아니라 equals()를 사용한다.
  • &&, ||, !을 조합하면 복합 조건을 만들 수 있다.
profile
html_programming_language

0개의 댓글