티스토리 뷰
프로그램에서 데이터를 처리해서 결과 만들어 내는 것을 연산이라 하는데,
이런 연산을 하기위해 사용되는 기호나 표기방법을 연산자라고 한다.
이런 연산자들끼리는 우선순위가 정해져 있으며 또 그 처리방식에 따라
같은 결과를 낼지라도 성능적으로 더 우수한 연산자가 있다.
먼저 연산자의 종류를 표로 한번 보겠다.
종류 | 연산 방향 | 연산자 | 우선 순위 |
단항 연산자 | ++ -- ~ ! (type) | 높음 낮음 |
|
산술 연산자 | → | * / % | |
+ - | |||
<< >> >>> | |||
비교 연산자 | < > <= >= instanceof | ||
== != | |||
논리 연산자 | & | ||
^ | |||
| | |||
&& | |||
|| | |||
삼항 연산자 | ? : | ||
대입 연산자 | ← | = *= /= %= += -= <<= >>= >>>= &= ^= |= |
이제 각각의 연산자에 대해 정리해보겠다.
1. 증감연산자
++ , -- 와 같이 생긴 이 연산자는 증감연산자로 피연산자의 값을 1 증가 혹은 감소 시키는 연산자이다.
즉, 변수 a에 적용을 시킨다면 'a++' 이나 'a = a + 1' 은 같은 결과를 낸다.
이 연산자는 그 피연산자와의 위치에 따라 전위연산자와 후위연산자로 나뉘는데,
이 차이는 먼저 결과값을 반영시켜 현재명령문에서 적용하는가,
아니면 현재명령문 시행후 결과값을 반영시키는가의 차이이다.
자세한건 코드로 확인해보겠다.
char a = 'a';
System.out.println(a++);
System.out.println(a);
다음같은 후위연산자를 사용해 문자 a를 증가시킨다고 가정하면 그 결과는
다음과 같이 나온다.
이는 출력명령문에서 후위연산자를 사용해 변수 a의 값을 증가시켰으므로 첫번째 출력은 기존의 a값 그대로 출력되지만,
다음 출력문에서 한번더 출력시엔 연산결과가 반영된 b로 출력되는것이다.
그렇다면 전위연산자를 사용해 실행한 결과는 어떻게 되는가
이 역시 코드로 확인해보면
char a = 'a';
System.out.println(++a);
이미 연산결과 먼저 반영후 출력 명령문이 실행되는것을 확인 할 수 있다.
2. 형변환 연산자
(type)은 명시적 형변환시 사용하는 형변환 연산자이다.
바꾸려는 자료형으로 type 대신 작성해 명시적 형변환을 수행한다.
3. 산술 연산자
+ : 합 , - : 차 , * : 곱 , / : 나눈 몫, % : 나눈 나머지
4. 쉬프트 연산자
<< : 피 연산자의 비트값을 왼쪽으로 한칸씩 이동후 빈칸엔 0으로 채운다.
>> : 피 연산자의 비트값을 오른쪽으로 한칸씩 이동후 빈칸엔 부호값으로 대입한다.
>>> : 피연산자의 비트값을 오른쪽으로 한칸씩 이동후 빈칸은 0으로 채운다.
5. 비교연산자
부등호의 의미는 수학에서 사용하는것과 동일 하나
instanceof 라는 연산자를 한번 살펴보도록 하겠다.
class Parents{
}
class Childs extends Parents{
}
Parents p = new Parents();
Childs c = new Childs();
System.out.println(c instanceof Childs);
System.out.println(c instanceof Parents);
System.out.println(c instanceof Object);
System.out.println(p instanceof Childs);
System.out.println(p instanceof Parents);
System.out.println(p instanceof Object);
다음과 같은 코드를 작성해 실행한다면
p instanceof Childs
에 대해서만 false 를 리턴하는것을 확인 할 수 있다.
instanceof 연산자는 객체 타입을 확인하는 연산자로
객체변수명 instanceof 클래스
의 형태로 사용되며
해당 객체가 해당 클래스로의 형변환이 가능한지에 대해 boolean 타입으로 리턴해주는 연산자이다.
주로 상속관계를 살펴볼때 사용하는 연산자이다.
6. 논리연산자
& : 논리곱 (and)
| : 논리합(or)
! : 부정(not)
&& : 선행 조건이 true 일때만 후 조건을 확인후 true 인경우 true 리턴
|| : 선행 조건이 true 인경우 후 조건을 확인하지 않으며 false 인경우 후 조건 확인후 두조건 모두 false 인경우 false 리턴
7. 비트 연산자
피연산자를 내부적으로 비트로 변환시켜 해당 연산을 수행한다.
& | 비트 단위의 AND |
| | 비트 단위의 OR |
^ | XOR (배타적 OR) |
~ | 단항 연산자 이며, 비트를 반전한다. 0은 1로 1은 0으로 만듬 |
8. 대입 연산자
위에서 언급한 연산자를 현재 피연산자에 대입하는 연산자이다.
가령 a += b; 와 같은 연산자를 사용한다면
a = a + b; 와 같은 결과를 만들어 낸다.
9. 삼항 연산자
? : 꼴로 되어있으며 ? 좌측항에 들어간 조건의 참거짓에 따라
참이면 : 의 좌측항을 리턴, 거짓이면 우측항을 리턴하는 연산자이다.
코드를 통해 간단한 예시를 들면,
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println(max);
다음과 같이 사용 할 수 있다.
'Java > 이론' 카테고리의 다른 글
Enum (0) | 2023.11.24 |
---|---|
함수형 인터페이스 (JAVA) (0) | 2023.11.17 |
제네릭(Generic) (1) | 2023.10.04 |
형 변환(casting) (0) | 2023.09.17 |
단순자료형 (0) | 2023.09.17 |