1) 연산자 종류와 우선 순위
복합적으로 구성된 경우, 우선순위에 따라 수행된다.
단, 우선순위 외울 필요 없이 먼저 계산할 부분에 괄호 사용해서 묶어주면 먼저 처리되니 참고!
- 단항 → 이항 → 삼항
- 접근 → 산술 → 쉬프트 → 비교 → 논리 → 대입 → 나열
- 일반적으로 왼쪽에서 오른쪽 방향으로 순차 수행
- 예외: 대입 연산자 ( a=b=c=5) → 오른쪽에서 왼쪽
2) 일항 연산자
증감 연산자(++, —)
- boolean 논리 타입 외 모든 기본 타입 피연산자에 사용 가능
- 다른 연산자와 함께 사용할 경우 증감 연산자 위치에 따라 결과 좌우됨
- 전위 연산자(++a): 대입 및 연산 수행 전, 피연산 변수 값을 1 증가시킴
- 후위 연산자(a-—) : 마지막에 피연산 변수 값을 1 감소시킴
int x = 1;
int y = 2;
int result1 = ++x + 10; // 12 출력 : 10 더하기 전에 x=2 되어 2+10 = 12 출력
int result2 = y++ + 10; // 11 출력 : 10을 더한 뒤 1+10 = 11 출력, y=2가 됨
int x = 10;
int y - 10;
int z;
x++; // 11
++x; // 12
System.out.println(x); // 12 출력
z = x++;
System.out.println(z); // 증감연산이 뒤에 있으므로 z = 12
System.out.println(x); // z = x 연산 수행 후, x + 1 적용되어 13 출력(위 수식 반영)
3) 이항 연산자
산술 연산자
- 산술연산(+=, -=, *=, /=)
똑같은 변수를 덜 입력하고 코드 작성 가능
int total = 300000;
total -= 20000; // total = total - 20000와 동일한 결과
- %연산자: 나머지를 구할 때 → 짝수, 홀수, 배수, 약수, 최대 공약수 등
- 짝수: 나머지가 0일 때
- 약수: 나누었을 때 자기자신이 나오는 값
int x = 10;
int result = x % 2; //result = 10 / 2를 수행한 나머지 값
//짝수 구하는 조건식 예시
if(result % 2 = 0) {~~~}
논리 부정 연산자(!)
- 논리 값을 부정하여 반대 값으로 변경
- 제어문을 활용할 때 많이 쓰임
- 방법: !변수명 또는 !기능(메소드)호출 또는 !비교연산자
System.out.println(!(age>19));
System.out.println(!name.contains("박"));
쉬프트 연산자(<<, >>, >>>)
산술 쉬프트(<<, >>)
- 특정 2배수의 계산을 할 때 빠른 속도로 처리가 가능함.
- 부호 비트는 유지되고 쉬프트 방향에 따라 해당 칸만큼 추가 또는 삭제됨(이동) ⇒ 1비트당 x2 /2의 효과
- left shift << 000..00101 <<3 = 부호비트 뒤에서 3개가 삭제되는 대신 가장 오른쪽에 0 3개가 추가됨
- right shift >> 000.00101 <<3 부호비트 뒤에 부호비트값과 동일한 수가 3개 생기고, 가장 오른쪽에서 비트 3개 삭제됨
- 양수: 1비트 당 /2 계산 진행 후 소수 버림
- 음수: 1비트 당 /2 계산 진행 후 소수 올림
논리 쉬프트(>>>): right만 존재
- 부호 비트 상관없이 진행, 부호 변동 생길 수 있음
- 한 비트마다 의미가 있는 경우 해당 비트 값을 추정하기 위해 사용되기도 함
- 해당 수만큼 비트를 오른쪽으로 밀고, 밖으로 나간 수는 삭제, 생긴 빈칸은 무조건 0으로 채움
- 자바는 최소 int 단위(32비트)로 연산을 수행함
비교 연산자
: 조건문에서 사용하는 경우가 대다수이다.
== ! = 동등비교
결과 값으로 항상 논리 값(true, false)이 나옴 피연산자로 모든 자료형(기본형, 참조형) 사용 가능
- ==: 두 값이 일치하는지
- ! =: 두 값이 불일치하는지
문자열 비교는 별도의 방식이 필요함 (클래스라서) (직접 초기화하면 가능은 하지만, 다른 변수에서 가져오는 경우 다른 것으로 인식) → equals() 메소드 호출 변수1.equals(변수2) ⇒ 같으면 t, 다르면 f 산출
- char 타입은 사용 불가 : 변수 == ‘’ 이용하면 됨
> >= <= < 크기비교
두 피연산자의 값의 크기 비교 기본형 boolean, 참조형을 제외하고 나머지 자료형에 모두 사용 가능
논리 연산자
(!만 1순위, 나머지는 6순위)
2개 이상의 진위형(비교연산과 기능호출) 연결할 때 사용
- boolean 타입에만 사용 가능
비트 논리 연산자
실무에서 거의 사용할 일 없음. 빠른 계산 속도
각 자리의 비트끼리 연산 진행
- 비트(2진수)
- 앞이 0이면 양수, 앞이 1이면 음수
- 양수 읽는 법: 1을 기준으로 값 읽음
- 음수 읽는 법: 0을 기준으로 값 읽고 -1 진행
❗-0인경우 -1
- 맨 뒤편부터 2의 0승 1승 2승 …
- 앞이 0이면 양수, 앞이 1이면 음수
종류
- & (AND 연산자) : 두 값이 모두 1이어야만 1, 그외 0
- ^ (XOR 연산자): 두 값이 서로 다를 때만 1, 그외 0
- | (OR연산자): 하나라도 값이 1이면 1, 그외 0
- ~ (보수연산자): 비트를 반전시킴
예시
➕ 코드에서의 진수별 표현
- 0b + 2진수
- 0 + 8진수
- 10진수
- 0x + 16진수
**2진수 → 16진수 꿀팁!**🍯
0bnnnnnnn: 0b이후 네칸씩 묶어서 숫자를 계산하고 바로 쓰면됨
15인 경우는 f라고 작성하면 됨 (f = 1111)
일반 논리 연산자
숫자 값의 범위를 찾을 때 사용
🛑 연산순위 주의 : && → ||
- && (그리고) : 두 가지 진위형 중 하나라도 거짓이면 거짓, 둘 다 참이어야 참
- || (또는) : 둘 중 하나라도 참이면 참, 둘 다 거짓이면 거짓
if(rs == null && rs.isClosed()) rs.close;
4) 삼항 연산자
참과 거짓에 따라 특정 값을 구하는 경우 사용 가능
간단히 체킹할 때 자주 사용
→ if문과 비교해서 코드 단순화 가능
- 조건, 참_표현식, 거짓_표현식이 모두 항이라서 삼항 연산자라고 불림
//(조건식) ? 참_표현식 : 거짓_표현식
int result = 1;
System.out.println(result > 0 ? "0보다 크다" : "0보다 크지 않다");
5) 대입 연산자
순수 대입연산자(=)
오른항 변수값을 왼항 변수에 대입한다
복합대입연산자
+= | 오른항 변수값을 왼쪽 변수에 더하면서 |
-= | 빼면서 |
*= | 곱하면서 |
/= | 나누면서 |
%= | 나머지를 구하면서 대입한다 |
예) i = i + 3 → i += 3
sum += input; : 사용자가 입력한 값들을 누적해서 더하는 의미 (int input = scanner.nextInt(); 일때)
반응형
'JAVA' 카테고리의 다른 글
7. 자바(java) : 배열(Array) [] 간단 정리 (0) | 2024.03.28 |
---|---|
6. 자바(java) : 제어문(Control Statement) 간단 정리 (0) | 2024.03.28 |
4. 자바(java) : 형변환(casting) 간단 정리 (0) | 2024.03.27 |
3. 자바(java) : 변수(Variable) 간단 정리 (0) | 2024.03.26 |
2. 자바의 기본 구조, 클래스 개요 정리 (0) | 2024.03.21 |