연산자
- 사용하는 목적에 따라 산술 연산자, 단항 연산자, 비교 연산자, 논리 연산자, 쉬프트 연산자, 기타 연산자로 구분한다.
산술 연산자 (+, -, *, /, %)
- 사칙연산 및 나머지 연산
- 피연산자가 정수타입(byte, short, char, int)이면 연산의 결과는 int 타입이다.
- 피연산자가 정수타입이고 그 중 하나가 long 타입이면 연산의 결과는 long 타입이다.
- 피연산자 중 하나가 실수 타입이면 연산의 결과는 실수 타입이다.
단항 연산자 (+, -,!, ++, --)
- 항이 하나인 연산자
- +, - : 부호 연산자
- ! : 논리 부정 연산자
- ++, -- : 증감 연산자
비교연산자(==, <, >, <=, >=,!=)
- 양 변을 비교하는 연산
- 참 또는 거짓으로 값을 반환한다.
- 반복문이나, 조건문과 같은 제어문에 사용된다.
- 문자열을 비교할 땐 equals() 함수를 사용하여 비교될문자열.equlas(비교할문자열) 형식으로 적으며 이때 영문자일 경우 대소문자를 구분하여 비교한다.
논리 연산자(&&, || , !, ^)
- 여러 가지 조건을 동시에 검사할 때 사용하는 연산자
- 두 항의 값이 boolean값일 경우 사용하는 연산자
AND | a&&b | 두 값이 모두 참이면 참 두 값 중 하나라도 거짓이면 거짓 |
OR | a||b | 두 값 중 하나라도 참이면 참 두 값 모두 거짓이면 거짓 |
NOT | !a | 현재 값의 반대인 값을 반환 참이었으면 거짓, 거짓이었으면 참 |
XOR | a^b | 두 값이 서로 다를 경우 참 두 값이 서로 같을 경우 거짓 |
비트 논리 연산자(&, |, ^, ~)
- 비트(bit) 단위로 논리 연산을 수행
- 0과 1이 피연산자
- 2진수로 표현했을 때 규칙에 따라 알맞은 결과 반환
- byte, short, int, long만 피연산자가 될 수 있고, float, double은 피연산자가 될수 없다.
비트 이동 연산자(<<, >>, >>>)
- 비트(bit)를 좌측 또는 우측으로 밀어서 이동시키는 연산을 수행한다.
- a << b : 정수 a의 각비트를 b만큼 왼쪽으로 이동, 오른쪽 빈자리는 0으로 채움, a*2^b와 동일한 결과 출력
- a >> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동, 왼쪽 빈자리는 최상위 부호 비트와 같은 값으로 채움,
a/2^b와 동일한 결과 출력 - a >>> b : 정수 a의 각 비트를 b만틈 오른쪽으로 이동, 왼쪽 빈자리는 0으로 채움
public static void main(String[] args) {
int a = 15; //1111
int b = 5; //0101
//비트 논리 연산
System.out.println(a|b); // 1111 | 0101 => 1111 (15)
System.out.println(a&b); // 1111 & 0101 => 0101 (5)
System.out.println(a^b); // 1111 ^ 0101 => 1010 (10) //배타적 논리합(XOR)
System.out.println(~b); // ~ 0000 0101 => 1111 1010 (-6) //보수(NOT)
//비트 이동 연산
System.out.println(a>>2); // 1111 >> 2 => 0011 (3)
System.out.println(b<<4); // 0101 << 4 => 0101 0000 (80)
System.out.println(b>>>2); // 0101 >>> 2 => 0001 (1)
}
삼항 연산자 ( 조건?참:거짓 )
- 항이 3개인 연산자
- 조건식의 참/거짓 여부에 따라서 각각 다른 결과 반환
- 조건은 boolean변수 또는 참/거짓을 반환하는 조건식이 들어간다.
- ? 뒤에는 조건이 참일경우의 값이, :뒤에는 조건이 거짓일 경우의 값이 들어간다.
대입연산자 (=, +=, -=, *=, /=, %= 등)
- 값을 할당하는데 쓰이는 연산자
- 자주 사용하는 연산을 간결하게 코딩할 수 있도록 만들어진 연산자
- 산술연산자와 함께 있다면 산술연산을 실행 한 후 대입을 한다.
오버플로우 / 언더 플로우
- 오버 플로우 (overflow) : 타입이 허용하는 최대 값을 벗어나는 것
- 언더 플로우 (underflow) : 타입이 허용하는 최솟값을 벗어나는 것
- 정수타입 연산에서 오버플로우 또는 언더플로우가 발생되면 해당 정수타입의 최소값 또는 최대값으로 되돌아간다.
산술연산에서 정수, 실수
- 산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는것이 좋다.
- 실수 연산을 해야한다면 정수연산으로 변경하여 계산하는 것이 좋다.
연산자 우선순위
- 산술 연산자에서 덧셈(+), 뺄셈(-) 연산자보단 곱셈(*), 나눗셈(/) 연산자가 운선순위가 높다(먼저 계산된다)
- 논리 연산자에서 && 가 || 보다 선순위가 높다.
- 우선순위가 같은 연산자의 경우 대부분 왼쪽에서부터 오른쪽으로 연산을 수행한다.
'JAVA > 정리' 카테고리의 다른 글
[JAVA] 모니터에 변수 값 출력 (0) | 2023.01.05 |
---|---|
[JAVA] 타입 변환 (0) | 2022.12.06 |
댓글