조건문에는 크게 두가지, if문과 switch문이 있다.
과 같은 형태를 가지며 이외의 조건들도 else문을 통해 추가할 수 있다.
//ex)
int a = 10;
if (a = 10) { //소괄호 조건이 true라면
System.out.print("a는 10입니다.); //값이 출력됨.
}else if(a <10){ //a가 10이 아닐때 if문 안의 소괄호 조건이 또다시 true라면
System.out.print("a는 10보다 작습니다.); //값이 출력됨.
}else{ // 그것조차 false여서 a가 10보다 작지않다면
System.out.print("a는 10보다 큽니다.); //값이 출력됨.
}
위 예제처럼 if문 하나만이 아닌 if문 안의 if문을 작성하는 방식이다.
이와 관련된 예제인 가위바위보 만들기 링크이다.
가위바위보
switch case문이 끝날때 break;를 걸어 연산문이 끝났다는 것을 알려주어야하며, case조건이 다 아닐때를 대비해 default: (연산)을 넣어주어야한다.(default에는 break를 달지않아도 되며, 딱히 없다면 생략가능하다.)
만약 break를 넣지않았고, default가 마지막에 있다면 case문의 조건이 맞으면 그 안에 있는 연산을 다 한 뒤 default까지 실행해버리는 경우가 생길 수 있다.
//ex)
int month = 10;
String monthString;
switch(month){
case 1:
monthString = "1월입니다.";
break;
...
case 12:
monthString = "12월입니다.";
break;
default:
monthString = "알 수 없음";
}
system.out.print(monthString);
| if | switch |
|---|---|
| 복합조건을 지원 | 피연산자 한개에 대한 조건만 지원 |
| 코드중복이 많음 | 코드중복이 적음 |
//ex) 위 달을 표시하는 switch문을 if로 바꾸면
if(month == 1){
monthString = "1월입니다.";
}else if(month == 2){
...
monthString = "12월입니다.";
}
//와 같이 코드중복이 많이 나옴.
반복문에는 크게 두가지, for문과 while문이 있다.
의 형태를 띄고 있다.
for(int i=0; i<10; i++){
System.out.print(i); //0부터 9까지 나오게된다.
}
의 형태를 띄고있다.
기존에는 그냥 for문만 사용해보아서 향상된 for문은 아직 나에겐 어색하다..
연속된 변수목록을 출력할 때 쓰이며, 그냥 for문과는 다르게 값을 2개로 줄여준다.
int[] numbers = {1,3,5,7};
for(int number : numbers){
System.out.print(number + " "); //1,3,5,7이 순서대로 출력된다.
}
//-> 기존 for문으로 나오게 한다면
for(int number = 0; number < numbers.length; i++){
System.out.print(numbers[number]+" "); //과 같이 표현해야한다.
}
여기서 잠깐!
.length는 배열의 길이를 구하는 메서드이다.
length를 사용하면, 위 예제에서 numbers 배열의 갯수가 바뀌게 되면 for문 조건에 있는 numbers.length의 수를 바꾸어야하는 하드코딩보다 length메서드를 사용하여 효과적으로 표현할 수 있다.
의 형태를 띄고있다.
초기값이 없이 조건문만 명시하여 반복하며, 무한루프를 조심해야하는 대표적인 반복문이다.
조건이 true이면 연산을 계속하고 false이면 반복문을 빠져나오게된다.
의 형태를 띄고있다.
최초 1회는 반드시 연산 수행을 한 후 조건문을 체크하여 더 반복할지를 결정한다.
위 switch문에서도 말했듯이 연산문이 끝났다는 것을 알려주는데 사용하며, 반복문에서 break 명령을 호출하면 가장 가까운 블럭의 for문 또는 while문을 중단한다.
//ex)
for (int i = 0; i < 10; i++) {
System.out.println("i: " + i);
if (i == 2) {
break; // i 가 2일때 가장 바깥 반복문이 종료.
}
for (int j = 0; j < 10; j++) {
System.out.println("j: " + j);
if (j == 2) {
break; // j 가 2일때 가장 안쪽 반복문이 종료.
}
}
}//그리하여 나온 출력물은
//i=0 j=0, j=1 / i=1 j=0 j=1 / i=2 출력되어 끝이 난다.
반복문에서 해당 순서를 패스하고 싶을 때 사용한다.
이를 사용한 선택적 구구단은 다음 링크에서 확인이 가능하다.
구구단