학습 목표
- 비트별로 조작하는 비트 연산자와 시프트 연산자의 동작을 설명할 수 있다.
- if 문을 이용한 선택 구조에 대해 설명할 수 있다.
- 반복 구조인 for문, while문, do ~ while 문에 대해 설명할 수 있다.
- 무한 루프(loop) 오류에 대해 설명할 수 있다.
- Break 문, continue 문에 대해 설명할 수 있다.
- 다중 선택 구조인 switch 문에 대해 설명할 수 있다.
- 선택 정렬 프로그램을 설명할 수 있다.
학습 내용
비트(bit) 연산자
컴퓨터 내부의 데이터를 비트 단위로 비교하거나 조작할 때 사용함
정수형 데이터를 조작할 때 사용함
- 데이터와 비트
- 컴퓨터는 2진 기계이므로 모든 데이터는 2진 코드로 저장됨
- 2진 코드의 한 자리는 비트라고 함
비트 논리곱 & 연산
각 비트를 비교하여 모두 1이면 1, 아니면 0을 반환하는 연산
논리 연산과 동일하다
예) a = 170, b = 245일때



비트 논리합 | 연산
각 비트를 비교하여 모두 0이면 0, 아니면 1을 반환하는 연산
논리 연산과 동일하다
예) a = 170, b = 245일때



비트 배타적 논리합(XOR) ^ 연산
각 비트를 비교하여 서로 다르면 1, 아니면 0을 반환하는 연산
예) a = 170, b = 245일때



비트 부정(NOT) ~ 연산
각 비트의 1은 0으로, 0은 1로 반전시키는 연산
예) a = 170, b = 245일때



시프트(Shift) 연산자
컴퓨터 내부의 데이터를 비트 단위로 비교하거나 조작할 떄 사용
정수형 데이터를 조작할 때 사용
- 왼쪽 시프트 연산자 <<
- x값을 n비트 만큼 왼쪽으로 이동시킴
- 최상위 비트보다 왼쪽으로 시프트된 비트는 삭제됨
- 최하위 비트는 0으로 채워짐
예) 178 << 2
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |


- 논리 오른쪽 시프트 연산자 >>>
- x값을 n비트 만큼 오른쪽으로 이동시킴
- 최하위 비트보다 오른쪽으로 시프트된 비트는 삭제됨
- 최상위 비트는 0으로 채워짐
예) 178 >>> 2
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |


- 오른쪽 시프트 연산자 >>
- x값을 n비트 만큼 오른쪽으로 이동시킴
- 최하위 비트보다 오른쪽으로 시프트된 비트는 삭제됨
- 최상위 비트는 시프트 하기 전 최상위 비트값과 같은 값으로 채워짐
예1) 178 >> 2



예1)


if문
if문은 조건에 따라 처리를 다르게 할 때 사용함
- if 단독사용
- 조건이 참일경우에만 특정문을 실행하는 경우 사용
- 실행해야 할 문이 여러개인 경우 {}로 묶어서 사용


- if ~ else 구조
- 구조에 따라 두개의 처리를 선택하는 경우 사용함


whlie 문
while 문은 조건이 성립하는 동안 계속 반복처리를 실행함 (파이썬의 while과 같음)


do ~ while 문
조건과 상관없이 반드시 한번은 처리할 문으로 진행함
조건이 성립하면 반복함
for 문과 달리 반복 횟수를 세는 카운터가 필수적이 아님
그러나 반복 횟수를 세기 위해서는 카운터를 선언해서 사용함
while(조건) 뒤에 ; 세미콜론을 반드시 붙여야 함


끝에 조건을 달아 반복하는 개념은 파이썬에선 찾아볼 수 없었던 개념이다.
자바에서 break문과 continue문의 기능은 파이썬과 같다.
응용


switch 문
switch 문은 여러 개의 case 라는 선택지에서 식의 값과 일치하는 것을 골라 해당하는 처리를 실행함
switch 문의 식에는 char형, byte형, short형, int형 변수나 평가값(결과값) 만 사용함
식의 값이 어떤 case와도 맞지 않을 경우에는 default로 넘어가서 처리됨
각 case의 마지막에는 break 문을 두어 선택한 처리만을 수행하도록 함
if와 else if 문의 고도화 된 버전인것 같다. 파이썬엔 없던 기능인만큼 확실히 숙지해두자.

해당 코드는 반복문을 수행하며 switch 문의 조건을 수행해 결과를 출력하고 있다.

- switch 문의 식에는 char형, byte형, short형, int형이 아닌것을 사용할 수 없으므로, 이 경우에는 if ~ else 를 내포시켜 사용함 (String 형)
- 모든 switch 문은 내포된 if ~ else 구조로 변환할 수 있음.
선택 정렬
올림차순 정렬 알고리즘
- 주어진 리스트 중에 최소값을 찾음
- 그 값을 맨 앞에 위치한 값과 교체함
- 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체함
- 하나의 원소만 남을 때까지 단계 1~ 단계 3 을 반복함


주의사항
파이썬과는 달리 자바는 아주 간깐한것같다.
'코딩딩 > Java' 카테고리의 다른 글
인텔리제이 설치 및 프로젝트 생성 (0) | 2023.07.01 |
---|---|
메소드의 가변 인수와 생성자, 클래스의 속성 (0) | 2023.06.29 |
클래스와 메소드 (0) | 2023.06.29 |
각종 연산자와 조건식, 형변환과 printf 메소드 (0) | 2023.06.28 |
자바의 데이터 입력 방법, 배열, 각종 연산자 (0) | 2023.06.28 |