IT/JAVA

[무작정 기록] 연산자

Alo_alex 2025. 3. 11. 12:55

연산자(Operators)


- 산술연산자(Arithmetic Operators)

  : 말 그래도 숫자를 계산하는 연산자.

 

연산자 설명 예제 (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 (나머지)

 

 

 

 


- 대입연산자(Assignment Operators)

  : 값을 변수에 할당하는 연산자.

 

- 복합치환연산자(Compound Assignment Operators)

  : 산술연산자와 대입 연산자를 함께 사용하는 연산자.

    즉 변수자신에 어떠한 연산을 하여 다시 변수자신에 저장하는 연산자

 

대입 분류 연산자 설명 예제 (a = 10) 결과
대입 = 대입 a = 5 a = 5
복합 치환 대입 += 덧셈 후 대입 a += 3 a = 13
복합 치환 대입 -= 뺄셈 후 대입 a -= 2 a = 8
복합 치환 대입 *= 곱셈 후 대입 a *= 4 a = 40
복합 치환 대입 /= 나눗셈 후 대입 a /= 2 a = 5
복합 치환 대입 %= 나머지 후 대입 a %= 3 a = 1
복합 치환 대입 >>= 오른쪽 이동 후 대입 a >>= 2 a = 2
복합 치환 대입 <<= 왼쪽 이동 후 대입 a <<= 2 a = 40

 

 

 

 


- 비교연산자(Relational Operators)

  : 비교연산자는 결과의 값이 boolean 이 제공하는 값인 'true', 'false'로 받을 수 있다.

    즉 boolean 타입의 결과가 제공된다.
    (String에 'true', 'false'를 넣으면 텍스트로 인식한다.)

 

연산자 설명 예제 (a = 1, b = 2) 결과
== 같음 a == b false
!= 다름 a != b true
> 크다 a > b false
< 작다 a < b true
>= 크거나 같다 a >= b false
<= 작거나 같다 a <= b true

 

 

 

 


- 논리연산자(Logical Operators)

  : 여러개의 조건을 조합하여 참(true) 또는 거짓(false)을 반환한다.

    즉 비교연산자처럼 조건을 평가하는데 사용되지만, 그 사용 목적과 결과값의 타입이 다르다.

    조건문에 자주 사용된다.

 

연산자 의미 설명 예제 (a = 1, b = 2) 결과
&& (*) 논리 AND 연산자의 단축평가 둘다 true 일때 true
(둘 중 하나만 false 여도 false,
첫번째 값이 false 이면 바로 false)
a && b false
! 논리 NOT 값을 반대로 변환
( 즉 ~가 아닐경우 )
1. !a 혹은 !b
2. !(a != 0)
1. error, 형이 int이기 때문에
2. false
|| (*) 논리 OR 연산자의 단축평가 하나만 true 여도 true
(둘 중 하나만 true 여도 true,
첫번째 값이 true 이면 바로 true)
1. a || b
2. (a != 0) || (b != 0)
1. error, 형이 int이기 때문에
2. true

(*) 단축평가 (Short-Circut Evalution) : 불필요한 연산을 수행하지 않고 결과를 결정하는 최적화 기법

 

Short-Circut Evalution 와 Short Cut operation의 차이

Short-Circut Evalution은 하나의 기법으로  Short Cut operation의 한 부분이다.

즉 "is-a" 관계이다.

 

 

 

 

 


- 비트연산자(Bitwise Operators)

  : 정수형(int, long 등)의 개별 비트를 대상으로 연산

 

- 비트이동연산자(Bitwise Shift Operators)

  : 이진수로 표현된 숫자에서 비트의 위치를 왼쪽 또는 오른쪽으로 이동시키는 연산자.

 

비트분류 연산자 의미 설명 예제 (a = 1, b = 2) 결과
비트 & 비트 AND 두 비트가 모두 1일때만 1을 반환
(다르면 0을 반환)
a & b 0
비트 | 비트 OR 연산자 하나라도 1이면 1을 반환 a | b 3
비트 ^ 비트 차 두 비트가 다르면 1, 같으면 0을 반환 a ^ b 3
비트 ~ 비트 반전 모든 비트의 반전 (1의 보수) ~a, ~ b -2, -3
비트이동 << 왼쪽 시프트 비트를 왼쪽 으로 (n칸만큼)이동 a << b 4
비트이동 >> 오른쪽 시프트 비트를 오른쪽으로 (n칸만큼) 이동 a >> b 0
비트이동 >>> 부호없는 오른쪽 시프트 비트를 오른쪽으로 이동하고 0으로 채움 a >>> b 0

 

 

* 비트 논리결과 표

예시값 결과값
X Y & ( 비트 AND ) | ( 비트 OR ) ^ ( 비트 차 )
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

 

 

 

 


 

- 삼항연산자(Ternary Operators) 혹은 조건식연산자

  : 간단한 조건문을 한줄로 표현 할 수 있게 해주는 연산자.

    if else문을 한줄로 줄여 놓은것.

    하지만 너무 복잡하면 if-else 를 이용하는게 더 가독성이 좋댜.

연산자 구조 설명 예제  (a = 1, b = 2) 결과
( 항1 )? 항2: 항3 ( 항1 ) 자리에는 조건식이 온다.
(즉 무엇이 올것인지)
(만약 항1이 참이라면 항2를 수행, 그렇지 않으면 항3을 동작)

항2, 항3 자리에는 변수가 올 수도 있고 수식이 올 수도 있다.
(하지만 System.out.println 같은 명령문은 안된다.)
(하지만 System.out.println 안에 삼항연산자를 직접 입력 할 수 있다.)
a < b ? a : b (true) 1 반환

 

 

 

 


- instanceof연산자(instanceof Operators)

  : 객체가 특정 클래스 또는 그 자식 클래스의 인스턴스인지 확인하는데 사용

연산자 구조 설명 예제  (a = 1, b = 2) 결과
객체 instanceof 클래스 객체가 해당 클래스 또는 상복받은 클래스의 인스턴스이면 true, 아니면 false 반환 a instanceof b error -> 컴파일 오류
instanceof는 참조형(객체)에서만
사용가능하다.
! 기본형(int, double, char)등에서는
instanceof를 사용할 수 없다.
! 올바른 사용법 !
1. Integer(객체)로 변환하여 사용 Integer a = 1;
a instanceof Integer;
true
2. 클래스 또는 인터페이스 활용 class Animal{}
class Dog extends Animal{}

Animal a = new.dog();
a instanceog Dog;
a instanceog Animal;
-> true
-> true

 

 

 

 


- 증감연산자(increment & Decrement Operators)

  : 변수의 값을 1씩 증가 혹은 감소 시키는 연산자.

 

연산자 의미 설명 예제 (a = 1, b = 2) 결과
++N 전위 증가 연산자(Pre-increment) 먼저 1 증가, 그 후 연산 수행 ++a
a
2
2
N++ 후위 증가 연산자(Post-increment) 연산 후 1 증가 b++
b
1
2
--N 전위 증가 연산자(Pre- decrement) 먼저 1 감소, 그 후 연산 수행 --a
a
0
0
N-- 후위 증가 연산자(Post-decrement) 연산 후 1 감소 b--
b
1
0

 

 

반응형