최재영의 개발 일지
GitHubLinkedIn

연산자

Java1분 읽기

산술 연산자 (Arithmetic Operators)

산술 연산자는 기본적인 수학 연산을 수행하는 데 사용된다.

연산자이름설명예제결과
+덧셈두 피연산자의 값을 더한다.5 + 38
-뺄셈첫 번째 피연산자에서 두 번째 피연산자를 뺀다.5 - 32
*곱셈두 피연산자의 값을 곱한다.5 * 315
/나눗셈첫 번째 피연산자를 두 번째 피연산자로 나눈다.15 / 35
%나머지첫 번째 피연산자를 두 번째 피연산자로 나눈 나머지를 반환한다.5 % 32
++증가피연산자의 값을 1 증가시킨다.int a = 5; a++;a6
--감소피연산자의 값을 1 감소시킨다.int a = 5; a--;a4

참고: 증가(++)와 감소(--) 연산자는 전위(prefix) 또는 후위(postfix) 형태로 사용할 수 있다.

  • 전위 증가(++a): 값을 증가시킨 후 표현식에 사용
  • 후위 증가(a++): 표현식에 사용된 후 값을 증가시킴

할당 연산자 (Assignment Operators)

할당 연산자는 변수에 값을 할당하는 데 사용된다.

연산자이름설명예제동일 표현
=할당우측 피연산자의 값을 좌측 피연산자에 할당한다.a = 5-
+=덧셈 할당덧셈 후 결과를 좌측 피연산자에 할당한다.a += 5a = a + 5
-=뺄셈 할당뺄셈 후 결과를 좌측 피연산자에 할당한다.a -= 5a = a - 5
*=곱셈 할당곱셈 후 결과를 좌측 피연산자에 할당한다.a *= 5a = a * 5
/=나눗셈 할당나눗셈 후 결과를 좌측 피연산자에 할당한다.a /= 5a = a / 5
%=나머지 할당나머지 연산 후 결과를 좌측 피연산자에 할당한다.a %= 5a = a % 5
&=비트 AND 할당비트 AND 연산 후 결과를 좌측 피연산자에 할당한다.a &= 5a = a & 5
|=비트 OR 할당비트 OR 연산 후 결과를 좌측 피연산자에 할당한다.a |= 5a = a | 5
^=비트 XOR 할당비트 XOR 연산 후 결과를 좌측 피연산자에 할당한다.a ^= 5a = a ^ 5
<<=왼쪽 시프트 할당왼쪽 시프트 연산 후 결과를 좌측 피연산자에 할당한다.a <<= 2a = a << 2
>>=오른쪽 시프트 할당오른쪽 시프트 연산 후 결과를 좌측 피연산자에 할당한다.a >>= 2a = a >> 2
>>>=부호 없는 오른쪽 시프트 할당부호 없는 오른쪽 시프트 연산 후 결과를 좌측 피연산자에 할당한다.a >>>= 2a = a >>> 2

비교 연산자 (Comparison Operators)

비교 연산자는 두 값을 비교하는 데 사용되며, 결과는 항상 boolean 타입(true 또는 false)이다.

연산자이름설명예제결과
==같음두 피연산자의 값이 같은지 비교한다.5 == 3false
!=다름두 피연산자의 값이 다른지 비교한다.5 != 3true
>초과좌측 피연산자가 우측 피연산자보다 큰지 비교한다.5 > 3true
<미만좌측 피연산자가 우측 피연산자보다 작은지 비교한다.5 < 3false
>=이상좌측 피연산자가 우측 피연산자보다 크거나 같은지 비교한다.5 >= 5true
<=이하좌측 피연산자가 우측 피연산자보다 작거나 같은지 비교한다.5 <= 5true

참고: 객체 비교 시 ==!=는 참조 비교(reference comparison)를 수행한다. 객체의 내용을 비교하려면 equals() 메서드를 사용해야 한다.

논리 연산자 (Logical Operators)

논리 연산자는 boolean 값(true 또는 false)에 대한 연산을 수행한다.

연산자이름설명예제결과
&&논리 AND두 피연산자가 모두 true일 때만 true를 반환한다.true && falsefalse
||논리 OR두 피연산자 중 하나라도 true이면 true를 반환한다.true || falsetrue
!논리 NOT피연산자의 boolean 값을 반전시킨다.!truefalse

특징

  • 논리 연산자는 단락 평가(short-circuit evaluation)를 수행한다.
  • && 연산자는 첫 번째 피연산자가 false이면 두 번째 피연산자를 평가하지 않는다.
  • || 연산자는 첫 번째 피연산자가 true이면 두 번째 피연산자를 평가하지 않는다.

비트 연산자 (Bitwise Operators)

비트 연산자는 정수형 데이터의 개별 비트를 조작하는 데 사용된다.

연산자이름설명예제결과
&비트 AND두 피연산자의 대응되는 비트가 모두 1이면 1을 반환한다.5 & 31 (101 & 011 = 001)
|비트 OR두 피연산자의 대응되는 비트 중 하나라도 1이면 1을 반환한다.5 | 37 (101 | 011 = 111)
^비트 XOR두 피연산자의 대응되는 비트가 서로 다르면 1을 반환한다.5 ^ 36 (101 ^ 011 = 110)
~비트 보수피연산자의 비트를 반전시킨다 (0은 1로, 1은 0으로).~5-6 (~00000101 = 11111010)
<<왼쪽 시프트좌측 피연산자의 비트를 우측 피연산자 수만큼 왼쪽으로 이동시킨다.5 << 110 (101 << 1 = 1010)
>>오른쪽 시프트좌측 피연산자의 비트를 우측 피연산자 수만큼 오른쪽으로 이동시킨다. 부호 비트가 복사된다.5 >> 12 (101 >> 1 = 010)
>>>부호 없는 오른쪽 시프트좌측 피연산자의 비트를 우측 피연산자 수만큼 오른쪽으로 이동시킨다. 상위 비트는 0으로 채워진다.5 >>> 12 (00000101 >>> 1 = 00000010)

삼항 연산자 (Ternary Operator)

조건에 따라 두 값 중 하나를 선택한다.

연산자이름설명예제결과
? :조건 연산자조건이 true이면 첫 번째 값을, false이면 두 번째 값을 반환한다.x > 0 ? "양수" : "음수 또는 0"x가 양수이면 "양수", 그렇지 않으면 "음수 또는 0"

특수 연산자 (Special Operators)

이 카테고리에는 Java의 특별한 목적을 가진 연산자들이 포함된다.

연산자이름설명예제
::메서드 참조 연산자메서드를 참조한다.String::length
->람다 표현식 연산자람다 표현식을 정의한다. (Java 8+)(a, b) -> a + b

연산자 우선순위 (Operator Precedence)

Java 연산자는 우선순위에 따라 평가된다.

우선순위연산자설명
1() [] .괄호, 배열 접근, 멤버 접근
2++ --후위 증가/감소
3++ -- + - ~ !전위 증가/감소, 단항 플러스/마이너스, 비트 보수, 논리 부정
4new (type)객체 생성, 타입 캐스팅
5* / %곱셈, 나눗셈, 나머지
6+ -덧셈, 뺄셈
7<< >> >>>비트 시프트
8< <= > >= instanceof비교 연산자, instanceof
9== !=동등 비교
10&비트 AND
11^비트 XOR
12|비트 OR
13&&논리 AND
14||논리 OR
15? :삼항 조건 연산자
16= += -= *= /= %= &= ^= |= <<= >>= >>>=할당 연산자

참고: 같은 우선순위를 가진 연산자가 여러 개 있을 경우, 대부분 왼쪽에서 오른쪽으로 평가된다. 할당 연산자는 오른쪽에서 왼쪽으로 평가된다.

Java 9+ 추가 연산자

Java 9 이후에 추가된 특별한 연산자들이다.

연산자이름설명예제Java 버전
var타입 추론로컬 변수의 타입을 컴파일러가 추론하도록 합니다.var list = new ArrayList<String>();Java 10+
yieldswitch 표현식 반환switch 표현식에서 값을 반환합니다.yield result;Java 13+
->case 라벨switch 표현식에서 화살표 라벨을 사용합니다.case 1 -> result = "One";Java 14+
record레코드 선언불변 데이터 객체를 선언합니다.record Point(int x, int y) {}Java 16+
sealed봉인 클래스상속 가능한 클래스를 제한합니다.sealed class Shape permits Circle, Rectangle {}Java 17+