Hyun's Wonderwall

[백엔드] 스터디 1주차 - Java (3) 연산자, 조건, 반복문 본문

Study/Java, Spring

[백엔드] 스터디 1주차 - Java (3) 연산자, 조건, 반복문

Hyun_! 2023. 3. 27. 18:09

공부에 사용한 자료

    • 객체지향 프로그래밍 과목 수업자료
      [Chapter 02]
      자바 기본 프로그래밍 (1) 기본 자료형과 연산자 (36p~72p)
      [Chapter 03] 자바 기본 프로그래밍 (1) 반복문 (~22p)

[식과 연산자]

연산: 주어진 식을 계산하여 결과를 얻어내는 과정

  • 증감연산자:  ++  --
  • 산술연산자:  +  -  *  /  %
  • 시프트 연산자:  >>  <<  >>>
  • 비교 연산자:  >  <  >=  <=  ==  !=
  • 비트 연산자:  &(비트 AND)  |(비트 OR)  ^(비트 XOR)  ~(비트 NOT)
  • 논리 연산자:  &&(논리 AND)  ||(논리 OR)  !  ^
  • 조건 연산자:  ?  :  (조건)
  • 대입 연산자:  =  *=  /=  +=  -=  &=  ^=  !=  <<=  >>=  >>>=

[연산자 우선순위]

같은 우선순위: 왼쪽->오른쪽 (예외: 대입 연산자, --, ++, +, -, !, 형변환은 오른쪽에서 왼쪽으로 처리한다)

괄호는 최우선순위: 괄호가 다시 괄호를 포함한 경우는 가장 안쪽의 관호부터 먼저 처리한다

참고만

 

* 산술 연산자: + _ * / %

- 몫=x/y, 나머지=x%y 활용 -> 10의 자리와 1의 자리 분리 가능

- 홀짝 판단 : n%21인지 0인지 확인

 

* 증감 연산: 1 증가(++) 또는 감소(--)

- 전위 연산자(++a, --a): 현재 줄에서 증가 후에 값 반환

- 후위 연산자(a++, a--): 증가 전의 값 반환, 다음 줄에서 증가함

 

* 대입 연산: 연산의 오른쪽 결과를 왼쪽 변수에 대입 (+=, *=...)

* 비교 연산: 두 피연산자를 비교하여 true 혹은 false의 논리 값을 내는 연산 (>, <...)

* 논리 연산: 논리 값으로 NOT, OR, AND 논리 연산, 논리 값을 내는 연산 (!a : NOT.    a||b : OR.    a&&b : AND)

ㄴ 2<=age<30 한번에 못쓰고 (age>=20)&&(age<30) 이렇게 해야한다.

ㄴ true&&false == false, true||false ==true.

 

* 조건 연산자(삼항 연산자) 'condition? a : b'

- condition true이면 연산식의 결과는 a, false이면 b이다. if-else를 간결하게 표현할 수 있다.

ex) int s = (x>y)? 1 : -1;      두 수의 차: (a>b)? (a-b):(b-a))

 

* 비트 연산

- 1바이트=8비트.

- 비트 논리 연산(& | ^ ~)과 비트 시프트 연산이 있다(비트를 오른쪽이나 왼쪽으로 이동)

ㄴ ^: XOR. 두 비트가 다르면 1, 같으면 0

ㄴ 비트 시프트 연산은 나중에 다시 보기 >> >>> <<

 

[비교문 - If, 중첩된 if, switch]

  • 단순 if문: if 괄호 안에 조건식(논리형 변수나 논리 연산)
    실행문장이 단일 문장인 경우 둘러싸는 {,} 생략이 가능.
  • 조건문 – if-else
    조건식이 true면 if{} 안의 코드 실행후 if-else문 벗어나고, False인 경우에 else{}안의 코드 실행후 if-else문 벗어남.
    * 다중 if-else문: if, else if, if 연속. 조건문이 너무 많은 경우 switch문 사용 권장.
    * 중첩 if-else문 (사례: 1~3학년은 60점 이상시 합격, 4학년의 경우 70점 이상시 합격)
  • switch문: 식과 case문의 값과 비교
    case의 비교값과 일치하면 해당 case의 실행문장 수행. Break를 만나면 switch문을 벗어남.
    case문에 break문이 없다면, 다음 case문으로 실행을 계속험. 언젠가 break를 만날 때까지 계속 내려가면서 실행.
    case문의 값: 문자 정수 문자열 리터럴만 허용, 실수 리터럴은 허용되지X.

[자바 반복문: for, while, do while문]

for문: for(int i=0; i<10; i++){} //c++와 비슷

- for문 안에 선언한 변수는 for문 종료시 사라진다.

ㄴfor문의 특이한 형태: 반복 조건이 true거나/비어 있으면(true로 간주) 무한반복

 

while: while(){} 반복 조건이 true이면 반복, false이면 반복 종료. 무한루프에 자주 쓰인다.

ㄴwhile에서 for문처럼 i 증가시켜 사용시 유의 -> while(i<10){ i++ 필요함}

 

do-while문: do{}while(); 일단 실행한 후 조건에 맞는지를 검사한다.

 

중첩 반복: 반복문이 다른 반복문을 내포하는 구조. 과다한 중첩 반복은 프로그램 구조를 복잡하게 하므로 2중 또는 3중 반복이 적당하다.

 

continue: 아래를 무시하고 다시 처음부터 시작해!

break: 반복문 하나를 완전히 빠져 나갈 때 사용, 하나의 반복문만 벗어난다.