[Java] 연산자와 제어문

Geehyun(장지현)·2024년 1월 22일
0

Java

목록 보기
2/12
post-thumbnail

연산자와 제어문의 경우 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 ifif 조건절 체크 후 false일경우 해당 else if 조건 체크 후 true일 경우 명령문 실행합니다.
else모든 if, else if 절이 false일 경우 명령문을 실행합니다.
switch표현식이 case절과 일치할 경우 해당 하위절을 실행합니다.
------
반복문for일정 횟수 반복을 설정하여 반복하여 명령문을 실행합니다.
while조건이 충족될 동안 반복하여 명령문을 실행합니다.
do ~ while일단 한번 실행 후 조건이 충족될 동안 반복하여 명령문을 실행합니다.
------
분기breakbreak문을 만날 경우 가장 가까운 if문을 제외한 가장 가까운{}를 탈출합니다.
continuecontinue문을 만날 경우 실행하고있던 코드가 남아있더라도 다음 반복을 진행합니다.

분기 中 레이블 이용

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 프로그램 입분서 자바 완전 정복 - 김동형
위 책을 공부하며 작성하고 있습니다!

profile
개발자를 꿈꾸는 병아리 (블로그 이전 준비중 입니다.)

0개의 댓글