연산자나 조건문, 반복문은 파이썬을 배울 때 조금 배웠어서 조금 친숙했다.
연산자에는 여러종류가 있다. 사칙연산이 들어있는 산술연산자나 비교연산자, 논리연산자, 대입연산자 등이 있다.
- 산술연산자 : +, - , *, /, %(나머지), <<,>>(비트연산)
- 비교연산자 : >, <, >=, <=, ==, !=
- 논리연산자 : &&(and), ||(or), !(not)
- 대입연산자 : =(변수지정), +=, -=(복합대입연산자), ++(+=1), --(-=1)
- ++나 --의 경우 피연산자 앞에다 쓰는 것은 먼저 치환 후 계산을 하는 것이고 뒤에다 쓰는 것은 계산을 한 후 변환하는 것이라 식의 값에 포함이 안됨
- 기타연산자 : 형변환 연산자(ex (int)), 삼항 연산자(조건?참결과:거짓결과), instance of 연산자 등
*이 때, 연산자의 연산 우선 순위는 이렇게 되며 괄호 안 연산은 우선된다.
산술 > 비교 > 논리 > 대입
*산술 변환 : 연산 전 피연산자들의 타입을 일치시키는 것 (작은 타입이 큰타입이 됨)
*비트연산
컴퓨터가 가장 빠르게 하는 연산
Bit(2진수)의 자릿수를 옮김
<<
: 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 됨
>>
: 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈이 됨
예시) 3<<2 = 32^2 = (2진법) 11(2)이 왼쪽으로 2번 옮겨져 1100(2)이 되기 때문.
3<<1 = 32^1 = (2진법) 11(2)이 왼쪽으로 1번 옮겨져 110(2)이 되기 때문.
조건문에는 대표적으로 if문과 switch문이 있다.
if문은 다수의 조건을 지원하며 if문 안에 if문을 넣는 것이 가능하다.
구조는 이러하다.
if (조건) {조건이 참일 때 연산}
if else를 이어 붙여 여러 상황에 대한 연산을 할 수 있다.
if (조건1) {조건1이 참일 때 연산}
else if (조건2) {조건 2가 참일 때 연산}
else if (조건3) {조건 3이 참일 때 연산}
.
.
else {위의 모든 조건이 거짓일 때 연산}
switch문은 case문과 함께 사용하며 if문보다 가독성이 좋은 조건문이다.
다만, 피연산자 1개에 대한 조건만 설정할 수 있으며, 조건(case)의 연산이 끝날 때마다 break;
를 넣어줘야한다.
그리고 switch의 조건문들 마지막에는 반드시 default: 연산;
을 넣어 모든 case에 부합하지 않을 경우의 연산도 명시해주어야한다. (if문 마지막의 else
와 같은 역할)
구조는 이러하다.
switch (피연산자) {
case 조건1 : 조건1이 참일 때의 연산;
break;
case 조건2 : 조건2가 참일 때의 연산;
break;
case 조건3 : 조건3이 참일 때의 연산;
break;
.
.
.
default : 모든 case가 거짓일 때의 연산;
}
switch문은 if문에 비해 비교적 코드 중복이 적다.
for문은 세가지 조건을 설정함으로써 사용할 수 있다.
초기값
을 설정하고 증가연산
을 통해 초기값이 변하게 하며 이 값이 조건문
을 충족할 때까지만 반복을 돌리도록 하는 것이다.
for (초기값; 조건문; 증가연산) {조건문이 참일 때의 연산}
예를 들어 이런 식이다.
for (i=0; i < 5; i++){
System.out.println(i+"번째 출력입니다.")
}
예전에는 for문을 리스트와 함께 배웠던 것 같은데 그래서 그런가 이런 형식을 이용한 향상된 for문도 있었다.
데이터타입[] 변수명A = {리스트}
for (데이터타입 새로운변수지정B : 변수명A) {연산}
이렇게 되면 새로운변수B는 변수A 안의 리스트 값들이 다 돌아갈 동안 반복을 하게 된다.
Java에서는 리스트를 표기할 때 데이터타입에 대괄호를 붙여 사용하는 것 같다.
예를 들어 정수의 리스트면 int[] 변수명
이런식으로.
While문은 초기값 없이 조건문 하나로 돌아가는 반복문이다.
연산을 수행을 하고 나면 다시 올라가서 조건을 확인하며 조건이 충족되는 한 계속 반복되기때문에, 이를 끊기 위해서는 언젠가 조건이 충족되지 않도록 변수가 계속 변하게 하거나, 아니면 조건문 안에 break;
를 사용하여 끊어내는 방법이 있다.
조건을 확인하고 수행을 시키는 일반 while문
과 수행을 먼저 시킨 후 조건을 확인하고 다시 반복시키는 do-while문
이 있다.
while(조건문) {연산}
do{연산} while(조건문)
만약 조건 안에서 특정 순서를 패스하고 싶어지면 continue;
를 사용하면 된다.