GeehDev

[Java] 연산자와 제어문 본문

Study/Java

[Java] 연산자와 제어문

geehyun 2024. 9. 8. 23:22

velog에서 이관해온 글

 


연산자와 제어문의 경우 JavaScript와 유사한 부분이 많아 다른 부분만 정리할 예정입니다! [JS] 연산자와 제어문(조건문, 반복문, 분기) 내용을 참고해주세요!

연산자

구분 연산기호 기능 결과
산술 연산자 + - * / % 사칙연산 및 나머지 연산
증감 연산자 ++ -- 값이 1씩 증가 또는 감소  
비트 연산자 & | ~ ^ 비트 AND, OR, NOT, XOR  
시프트 연산자 >> << >>> 비트 단위의 이동  
비교 연산자 < > <= >= == != 값의 크기 비교 boolean
논리 연산자 && || ! ^ 논리 AND, OR, NOT, XOR  
대입 연산자 = += -= *= /= &= |= >>= >>>= 산숫 연산 결과의 대입 실행
삼항 연산자 (조건문) ? x : y 조건문이 참일 경우 x 실행, 거짓일 경우 y 실행  

비트 연산자

비트 단위 연산자로, 두 피연산자를 2진수로 변환 후 각 값끼리 비교하는 연산자 입니다.
2진수로 변환 후 비트 연산 후 나온 2진수를 10진수로 변환한 값이 반환됩니다.

  • AND(&) : 두 값이 모두 1이어야만 1이며 나머지는 0입니다.
  • OR(|) : 두 값 중 하나만 1이어도 1이며 둘 다 0일 경우만 0입니다.
  • XOR(^) : 두 값이 서로 다른 경우만 1이며, 같을 경우는 0입니다.
  • NOT(~) : 0은 1로, 1은 0으로 반환합니다.
💡 연산 예시
// 17 => 0001 0001
// 5 => 0101일 때 각 비트연산자를 사용할 경우 아래와 같습니다.
17 & 5= 0001 => 1
17 | 5= 0001 0101 => 21
17 ^ 5= 0001 0100 => 20
~17 = 0000 1110 => 14
~5 = 0001 1010 => 26​

시프트 연산자

비트의 위치를 좌우로 이동하는 연산자 입니다.

산술 시프트

  • << : 비트를 왼쪽으로 이동시킵니다.
  • >> : 비트를 오른쪽으로 이동시킵니다.

논리 시프트

  • >>> : 부호 비트를 포함해 전체 비트를 오른쪽으로 이동시킵니다.

💡 연산 예시

// 17 => 0001 0001 일 때 각 시프트연산자를 사용할 경우 아래와 같습니다.
17 >> 2= 0100 => 4
17 << 1= 0010 0010 => 34
17 >>> 3= 0010 => 2

논리연산자 中 XOR

  • XOR(^) : 두 피연산자가 서로 다른 경우 true를 반환하고, 같을 경우 false를 반환합니다.
  •  

💡 논리연산자 XOR과 비트연산자 XOR
논리 연산자 XOR과 비트 연산자 XOR은 둘다 ^로 표시합니다. 해당 연산자는 피연산자로 들어온 값의 자료형에 따라 논리연산자 또는 비트 연산자로 사용됩니다.

  • 정수형 ^ 정수형 : 비트연산자
  • boolean ^ boolean : 논리연산자

제어문

종류 구문 내용
조건문 if 조건에 따라 true일 경우 명령문을 실행합니다.
  else if if 조건절 체크 후 false일경우 해당 else if 조건 체크 후 true일 경우 명령문 실행합니다.
  else 모든 if, else if 절이 false일 경우 명령문을 실행합니다.
  switch 표현식이 case절과 일치할 경우 해당 하위절을 실행합니다.
반복문 for 일정 횟수 반복을 설정하여 반복하여 명령문을 실행합니다.
  while 조건이 충족될 동안 반복하여 명령문을 실행합니다.
  do ~ while 일단 한번 실행 후 조건이 충족될 동안 반복하여 명령문을 실행합니다.
분기 break break문을 만날 경우 가장 가까운 if문을 제외한 가장 가까운{}를 탈출합니다.
  continue continue문을 만날 경우 실행하고있던 코드가 남아있더라도 다음 반복을 진행합니다.

분기 中 레이블 이용

break 또는 continue에서 레이블을 이용 시 break로 다중 반복문을 한번에 빠져나오거나, continue로 여러개의 반복문을 건너띌 수 있습니다.

레이블명:
for(int i = 0; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
        if(j == 3) {break 레이블명;} 
        System.out.println("내용~~");
    }
}

위 코드를 해석하면, break문을 만나면 레이블명이 있는 영역까지 탈출할 수 있게 됩니다.

레이블명:
for(int i = 0; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
        if(j == 3) {continue 레이블명;} 
        System.out.println("내용~~");
    }
}

continue문도 동일하게 다시 다음 반복을 진행할 반복문 앞에 레이블명을 작성 시 해당 반복문으로 진행되게 작성할 수 있습니다.

참고

Do it! 진짜 개발자가 되는 Java 프로그램 입분서 자바 완전 정복 - 김동형
위 책을 공부하며 작성하고 있습니다!