-
이것이 자바다 3장JAVA 2022. 11. 27. 23:55
*공부하고 기록하는 글입니다*
CH03. 연산자
3.1 부호/증감 연산자
- 부호 연산자는 변수의 부호를 유지하거나 변경함
연산식 설명 + 피연산자 피연산자의 부호 유지 - 피연산자 피연산자의 부호 변경 - 주의할 점은 정수 타입(byte, short, int) 연산의 결과는 int!!!! => 부호를 변경하는 것도 연산이니까 int 타입 변수에 대입해야한다.
byte b = 100; byte result = -b; // 컴파일 에러 byte b = 100; int result = -b; // ok
- 증감 연산자 ++, -- 는 변수 크기를 +1, -1 해줌
연산식 설명 ++ 피연산자 피연산자의 값을 1 증가 -- 피연산자 피연산자의 값을 1 감소 피연산자 ++ 다른 연산 수행한 후에 피연산자 값을 1 증가 피연산자 -- 다른 연산 수행한 후에 피연산자 값을 1 감소 - 변수 단독으로 증감 연산자가 사용되면 연산자 위치는 상관없음
- 그러나 여러 개의 연산자가 포함되어 있는 연산식에서는 위치에 따라 값이 달라져!
- 변수 앞에 연산자가 있으면 +1 또는 -1 먼저 일어나고, 뒤에 있으면 모든 연산을 끝낸 후에 +1 또는 -1 을 해줌
int a = 10; int b = 10; int result1 = ++a + 100; // a = 11, result1 = 111 int result2 = b++ + 100; // b = 11, result2 = 110
3.2 산술 연산자
- 산술 연산자는 +, -, /, *, %(나머지) - 5개
3.3 오버 플로우와 언더 플로우
- 오버플로우란 타입이 허용하는 최대값을 벗어나는 것을 말함
- 언더플로우란 타입이 허용하는 최소값을 벗어나는 것을 말함
- 정수 타입 연산에서 오버플로우/언더플로우가 일어나면 에러 발생하는게 아니고! 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다!
- byte 타입의 경우
-> 127 + 1 != 128
-> 127 + 1 = -128
-> -128 + 1 = -127
-> 이렇게!
- 따라서 연산 과정에서 오버플로우/언더플로우가 예상 된다면 범위가 더 큰 타입을 사용하도록
3.4 정확한 계산은 정수 연산으로
- 산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 말라고 한다.
3.5 나눗셈 연산 후 NaN과 Infinity 처리
- 나눗셈 또는 나머지 연산에서 정수를 0으로 연산 하는 경우 (정수number/0 또는 정수number%0) 예외가 발생!
- 무한대의 값을 정수로 표현하는건 불가능하기 때문
- but 실수를 0.0이나 0.0f로 나눗셈/나머지 연산하는 경우에는 예외가 발생하지 않고 연산의 결과는 Infinity 또는 NaN이 된다!
- 결과가 Infinity 나 NaN인 상태에서 계속 연산을 하면 안된다!!!
- Infinity 나 NaN 상태인지 확인하기 위한 메소드는 -> Double.isInfinite(변수) 또는 Double.isNaN(변수)
- 분기처리 할때 사용하기
3.6 비교 연산자
- 비교 연산자는 동등(==, !=) 또는 크기 (<,<=,>=,>)를 평가해서 boolean 타입인 true/false 를 산출한다.
- 피연산자 타입이 다른 경우에는 비교 연산을 수행하기 전에 타입을 일치시킨다.
- 문자열을 비교할 때는 동등 (==, !=) 연산자 대신 equals()와 !equals()를 사용하기
3.7 논리 연산자
- 논리 연산자는 논리곱(&&), 논리합(||), 배타적 논리합(^), 논리 부정(!)
- 배타적 논리합(XOR)은 하나는 true 이고, 다른 하나는 false 일 때 true~
3.8 비트 논리 연산자
- 비트 논리 연산자는 bit 단위로 논리 연산을 수행
- 0과 1이 피연산자가 되니까 -> 2진수로 저장되는 정수 타입(byte, short, int, long) 만 피연산자가 될 수 있어!
- AND(논리곱) - & : 두 비트 모두 1일 경우에만 연산 결과가 1
- OR(논리합) - | : 두 비트 중 하나만 1이면 결과는 1
- XOR(배타적 논리합) - ^ : 두 비트 중 하나는 1, 다른 하나는 0 이면 결과는 1
3.9 비트 이동 연산자
- 비트 이동 연산자는 비트를 좌측 또는 우측으로 밀어서 이동시키는 연산을 수행한다.
- a << b : 정수 a의 각 비트를 b만큼 왼쪽으로 이동, 오른쪽 빈자리는 0으로 채움, a * 2^b 와 같음
- a >> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동, 왼쪽 빈자리는 0으로 채움, a / 2^b 와 같음
- a >>> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동
'JAVA' 카테고리의 다른 글
이것이 자바다 2장 (0) 2022.11.27 이것이 자바다 1장 (0) 2022.11.27 이것이 자바다 6장 5-9 (0) 2022.11.20