-
java 연산 및 제어대학/객체지향프로그래밍 2022. 10. 7. 17:02
- 복합 대입 연산자
산술과 대입 연산자를 조합한 것. 언급한 이유는 성능상의 이점이 있기 때문.
- 비트 연산자
and(&), or(|), xor(^), not(~) 연산자를 지원한다.
2의 보수 계산법
음의 이진수는 2의 보수로 나타내는데 이를 계산하는 방법은 다음과 같다.
1. 양수의 이진수를 구한다.
2. 각 자리의 모든 비트를 반전시키고 1을 더한다.int a = 0b0101; int b = 0b0011; a & b // 1 (0b0001) a | b // 7 (0b0111) a & b // 6 (0b0110) ~b // -4 (0b1100)
- 비트 시프트 연산자
정수, 실수 타입에 연산자로서 사용할 수 있다.
왼쪽 시프트(<<), 오른쪽 시프트(>>)를 지원하며, 대입 연산자도 지원한다. (<<=, >>=)
왼쪽 시프트 시 오른쪽의 공백 비트는 0으로 채우게 되고,
오른쪽 시프트 시 왼쪽의 공백 비트는 왼쪽 최상위 비트와 같은걸로 채우게 된다.
단, 오른쪽 시프트 후 무조건 0으로 공백을 채우는 연산자(>>>)도 제공한다.
연산시 모든 결과는 int 형으로 자동 타입 변환된다.
int num = 0x0FFFFFFE; // 00001111_11111111_11111111_11111110 for (int i=0; i<4; i++) { num <<= 1; }
i=0, num == 0b00011111_11111111_11111111_11111100 // 536870908
i=1, num == 0b00111111_11111111_11111111_11111000 // 1073741816
i=2, num == 0b01111111_11111111_11111111_11110000 // 2147483632
i=3, num == 0b11111111_11111111_11111111_11100000 // -32
즉, m << n == m*2^n 와 같고, m >> n == m*2^(-n) 와 같다.
단, 오버플로 발생시 부호가 반전될 수 있다.
- 논리 연산자, 쇼트 서킷 논리 연산자
기본적으로 and(&), or(|), xor(^), not(~) 연산자를 지원한다.
또한 &&, || 연산자도 지원하는데 이 쇼트 서킷 논리 연산자의 특징은 다음과 같다.
false && 나머지 조건들: false 에 and 연산인데, 처음부터 이미 false 이므로 뒤의 나머지 조건은 검사하지 않고 바로 false를 반환한다.
true || 나머지 조건들: true 에 or 연산인다, 처음부터 이미 true 이므로 뒤의 나머지 조건은 검사하지 않고 바로 true를 반환한다.
- for 문 응용
for (int a = 1, int b = 4; a < b; a++, b--) {}
두 개 이상의 변수를 동시에 돌릴 수 있다.
for ( ; ; ) {}
무한 루프을 구현할 수 있다.
for (int x : [1, 2, 3, 4, 5]) {}
for-each 문으로, x는 컬랙션 [1, 2, 3, 4, 5]에 순차적으로 모두 접근한다.
- break 문 응용
// execute first: { // execute second: { // execute break first; // not executed } // not executed } // execute
레이블로 지정된 블럭을 break하면 해당 블럭 다음줄 부터 실행되도록 실행 흐름을 제어할 수 있다.
'대학 > 객체지향프로그래밍' 카테고리의 다른 글
java 인터페이스 (0) 2022.10.09 java 패키지 (0) 2022.10.09 java 클래스 (0) 2022.10.09 java 기본 문법 (0) 2022.10.07 java 특징 (0) 2022.10.07