이번에 알고리즘을 다시 공부하면서 자바의 기초와 알고리즘을 정리하기로 하였다.
우선 매우 기초적인 변수의 타입부터 알아보자
변수의 타입
우선 변수란 -> 하나의 값을 저장할 수 있는 기억공간이다.
변수는 크게 기본형과 참조형으로 나눌 수 있다.
크기는 1byte, 2byte, 4byte, 8byte를 나타낸다.
크기가 중요한 이유는 각 변수의 크기를 넘기면 오버플로우가 발생하기 때문이다.
따라서 위 사진의 크기를 잘 지켜서 사용해야 한다.
조건문
조건문에 대해 알아보자.
조건문은 조건식과 실행될 하나의 문장 또는 블록{}으로 구성되어있다.
java에는 if문과 swith문이 두 가지의 조건문이 있다.
if문을 보자.
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 명령문;
} else if (조건식2) {
조건식2의 결과가 참일 때 실행하고자 하는 명령문;
} else {
조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 때 실행하고자 하는 명령문;
}
위와 같은 과정을 통해 if문은 실행된다.
조건식의 결과는 반드시 true나 false가 와야 한다. ->boolean타입 이어야 한다.
이번에는 switch문을 보자.
switch (조건 값) {
case 값1:
조건 값이 값1일 때 실행하고자 하는 명령문;
break;
case 값2:
조건 값이 값2일 때 실행하고자 하는 명령문;
break;
...
default:
조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문;
break;
}
위와 같은 과정을 통해 swtich문이 실행된다.
switch문은 조건식의 계산 결과가 int타입의 정수와 문자열만 가능하다.
조건식의 계산 결과와 일치하는 case문으로 이동 후 break문을 만날 때까지 문장들을 수행한다.
만약 break문이 없다면 switch문의 끝까지 진행한다.
반복문
반복문이란 말 그대로, 문장 또는 문장들을 반복해서 수행할 때 사용한다.
반복문은 for문, while문 do-while문이 존재한다.
for문을 보자.
for문은 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문이다.
위와 같은 방식으로 반복되는데, 조건식이 참 인동 안 계속해서 반복하다가, 조건식이 참이 아니게 되면 반복문을 빠져나온다.
while문을 보자
while문은 우선 조건식이 참인지를 판단하여, 참이면 내부의 명령문을 실행한다.
내부의 명령문을 전부 실행하고 나면, 다시 조건식으로 돌아와 다시 참인지를 판단한다.
거짓이 되면, while문을 빠져나온다.
do-while문을 보자
do-while문은 먼저 루프를 한번 실행한 후에 조건식을 검사한다. 즉 do-while문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행하게 된다.
루프의 제어
일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안에 있는 모든 명령문을 실행한다. 하지만 continue문과 break문을 사용하면, 루프의 흐름을 사용자가 직접 제어할 수 있다.
Continue문을 보자
public static void main(String[] args){
for(int i=0;i<=10;i++){
if(i%3==0)
continue;
System.out.println(i);
}
}
위의 코드를 보면 3의 배수는 출력하지 않는다.
continue문은 자신이 포합 된 반복문의 끝으로 이동한다.
따라서 continue문 이후의 문장들은 수행되지 않는다.
break문을 보자
int num = 1, sum = 0;
while (true) { // 무한 루프
sum += num;
if (num == 10) {
break;
}
num++;
}
System.out.println(sum);
위의 코드를 보면 while의 조건식에 true가 들어가서 무한 루프에 빠지게 된다.
따라서 특정 조건이 만족했을 때, break문을 사용하면, 원할 때 반복문을 빠져나갈 수 있다.
한 가지 중요한 점은 일반적인 break문은 단 하나의 반복문만을 빠져나가게 한다.
따라서 한 번에 여러 반복문을 빠져나가고 싶다면 반복문 앞에 loop:를 붙여서 break문을 실행할 때 loop를 달아준다.
Loop :
for (int i = 2; i < 10; i++) {
for (int j = 2; j < 10; j++) {
if (i == 5) {
break Loop;
}
System.out.println(i + " * " + j + " = " + (i * j));
}
}
기존에 break문이었다면, for문을 1가지 밖에 탈출하지 못하지만, Loop로 반복문 위치를 설정해주어서, 원하는 반복문을 탈출할 수 있다.