Language/Java

'Do it 자바프로그래밍 입문' 3장 정리

ABCD 2022. 9. 1.

산자

  • 연산에 사용하는 기호

  • 연산에 사용하는 값

대입 연산자 (=)

  • 변수에 값을 대입하는 연산자
  • 연산자 중 우선순위가 가장 낮음
  • 대입연산자 기준으로 좌측을 lValue, 우측을 rValue 라고함

부호 연산자 ( +, -)

  • 변수나 상수값을 양수 / 음수로 나타냄
  • 단항 연산자

산술 연산자 ( +, -, *, /, % )

  • 사칙연산에서 사용하는 연산자
  • % -> 나머지를 구하는 연산자      //    %는 *, /와 우선순위 동일

증가/감소 연산자 ( ++, -- )

  • 증가, 감소 시키는 단항 연산자
  • 위치에 따라 값이 다르다.

관계 연산자 ( >, <, ≥, ≤, ==, != )

  • 항이 2개인 이항 연산자
  • 결과는 참(true), 거짓(false)로 반환
  • == -> 두 항값이 같으면 참
  • != -> 두 항값이 다르면 참

논리 연산자 ( &&, ||, !)

  • 명제를 생각하면 됨
  • && -> 모두 참이면 참
  • || -> 둘 중 하나라도 참이면 참
  • ! -> 부정     //단항연산자

단락 회로 평가 (SCE)

  • 두 항 모두를 실행하지 않고 결과 값을 알 수 있을 때 나머지 항을 실행하지 않는 것
  • 예상한 실행 결과 값이 다를 수 있으므로 주의 해야함

복합 대입 연산자 ( +=, -=, *=, /=, <<=, >>=, >>>=, &=, |=, ^= )

  • 여산이 모두 끝난 후 마지막으로 결과 값을 변수에 대입
  • 우선순위가 가장 낮은 연산자

조건 연산자 ( 조건식 ? 결과1 : 결과2)

  • 삼항 연산자
  • 조건식이 참인 경우 결과1
  • 조건신이 거짓인 경우 결과2

비트 연산자

  • 비트 단위로 연산이 이루어지는 연산자
  • '암호와' 작업처럼 임의의 숫자를 만들 때 사용
  • 어떤 변수의 특성 비트를 꺼내보는(masking) 경우 사용
  • Java는 이런환경은 아니지만, 프로그램 특정값을 만들거나 연산시에 사용

& 연산자

  • 비트 값이 모두 1인 경우 1값을 출력
  • ex)
int num1 = 5;
int num2 = 10;
int result = num1 & num2
/*    
  num1 : 00000101
& num2 : 00001010
result : 00001111
*/

| 연산자

  • 비트 값이 하나라도 1인 경우 1값을 출력
  • ex)
int num1 = 5;
int num2 = 10;
int result = num1 & num2
/*
  num1 : 00000101
| num2 : 00001010
result : 00001111
*/

^ 연산자

  • 비트 값이 같으면 0출력, 다르면 1출력
  • ex)
int num1 = 5;
int num2 = 10;
int result = num1 & num2
/*    
  num1 : 00000101
^ num2 : 00001010
result : 00001111
*/

~ 연산자

  • 비트 값에서 0을 1로, 1을 0으로 변환
  • ex)
int num = 10;
int result = ~num;
/*   
num = 00001010
~num = 11110101        음수가됨
       00001011 = 11   음수값은 양수로 표기 후 그 값을 알아 낼 수 있음
      따라서 ~num = -11
*/

<< 연산자

  • 왼쪽으로 비트를 이동시키는 연산자
  • ex)
int num = 5;	// num : 00000101
num << 2;		// num << 2 : 00010100

/*  
앞부분 00은 없어지고 뒷부분은 0으로 채움
왼쪽으로 n비트의 이동은 2^n만큼 곱한다는 뜻
*/

>> 연산자

  • 오른쪽으로 비트를 이동하는 연산자
  • ex)
int num = 5;	// num : 00000101
num >> 2;		// num >> 2 : 00000001

/*  
뒷부분 01은 없어지고 채워지는 비트값은 부호비트와 같은 것을 사용
왼쪽으로 n비트의 이동은 2^n만큼 나눈다는 뜻
*/

>>> 연산자

  • 오른쪽으로 비트를 이동하는 연산자
  • >> 연산자와 다른점은 채워지는 부분에 부호비트와 상관없이 '0'으로 채움

연산자 우선순위

  • 단항 연사자 -> 이항 연산자 -> 삼항 연산자 순서
  • 산술 -> 관계 -> 논리 -> 대입 순서
  • (     )의 우선순위가 가장 높음
728x90
반응형

댓글

💲 추천 글