제어문

  • 제어문의 종류에는 조건문, 반복문, 탈출문이 있다.

  • 조건문은 특정 조건을 만족할 때 실행할 문장을 작성하는 데 사용한다.

  • 반복문은 여러 번 반복 실행할 코드가 있다면 반복문을 작성한다.

  • 반복문이 실행되는 동안 실행을 중지시키고 싶으면 탈출문을 사용한다.

  • 조건문: if문, switch문

  • 반복문: while문, do~while문, for문, 향상된 for문

  • 탈출문: break, continue, return

조건문

if ~ else

  • if문은 프로그램의 흐름을 바꾸는데 사용되는 조건 선택 분기문이다.
  • if문의 조건식 결과는 반드시 boolean형이어야 되며, 조건식이 참이면 if문 블록안의 실행문이 실행되고, 거짓이면 else문 블록안의 실행문이 실행된다.
  • if문장은 else문장 없이 사용할 수 있다. 그러나 else문장은 if 문장 없이 단독으로 사용할 수 없다.
  • 조건식의 결과가 거짓일 때 실행할 문장이 없다면, else문 이하를 생략해도 된다.
if (a > b)
	max = a;
else
	max = b;

if ~ else if ~ else

  • 여러 조건들을 설정할 때 사용하는 조건문이다.
  • 다중 분기 조건문은 위에서부터 차례로 조건을 검색한다.
if (rank == 1)
{
	medalColor = 'G';
}
else if (rank == 2)
{
	medalColor = 'S';
}
else if (rank == 3)
{
	medalColor = 'B';
}
else
{
	medalColor = 'A';
}

switch ~ case

  • 복합 if문은 구현하기 복잡하고 프로그램의 효율성이 감소되는 단점이 있기 때문에, 다중 분기 문제를 해결할 때는 switch문을 사용한다.
  • switch문은 다중 분기 구조이므로 복합 if문의 논리적인 구조를 간결하게 표현할 수 있다.
  • if문과는 달리 조건식이 사용되지 않고, 값을 가지는 변수 또는 표현식이 판단조건으로 사용되며, 연산 결과의 데이터 타입은 int, String, Enum(열거형)이 사용된다.
  • case문 뒤에 사용되는 값은 변수를 사용할 수 없고, 반드시 상수를 사용해야 한다.
  • switch ~ case문에서 default는 if ~ else에서 else와 비슷한 효과를 가진다.
  • break문을 사용하지 않으면 잇따라 나오는 모든 case를 실행한다. 원하는 case의 실행문만을 실행하려면 break문을 써주어야 한다.
switch(medal)
{
	case "Gold":
    	System.out.println("금메달입니다.");
        break;
    case "Silver":
    	System.out.println("은메달입니다.");
        break;
    case "Bronze":
    	System.out.println("동메달입니다.");
        break;
    default:
    	System.out.println("메달이 없습니다.");
}

반복문

while

  • while문은 조건식을 만족하는 동안 반복문을 실행하는데, 조건식을 검사해서 조건식이 참이면 실행문을 반복하고, 거짓이면 while문을 빠져나온다.
  • while문에 들어가는 조건식도 if문과 마찬가지로 반드시 boolean타입으로 결과를 반환해야 한다.
  • 조건식 안에 true를 넣으면 무한루프가 발생하기 때문에 반드시 탈출구문을 넣어햐 한다.
while(num <= 10)
{
	sum += num;
    num++;
}

do ~ while

  • while문은 조건식을 먼저 검사하고 실행문이 반복되기 때문에 처음 실행 조건이 false라면 실행문이 단 한번도 실행되지 않는다.
  • 그러나 do ~ while문은 do 이하의 구문이 먼저 한번 실행된 뒤에 조건식을 검사하므로 결과가 true이든 false이든 무조건 한번은 실행이 된다.
  • do ~ while문은 조건식의 결과에 상관없이 루프를 반드시 한번 이상 실행시키도록 할 때 사용한다.
do {
	sum += num;
    num++;
} while(num <= 10);

for

  • for문은 제어조건을 한꺼번에 지정한다는 점이 다른 반복문과는 다르다.
  • 따라서 정확한 반복 횟수를 알고 있을 때는 for문이 while문보다 유용하다.
  • for문도 다른 제어문과 같이 실행문장이 한줄이면 블록 {}을 생략할 수 있다.
  • for문의 구조
    for (초기값; boolean형 조건식; 반복 표현식)
    {
    반복할 실행문;
    }
for(int i = 0; i < 10; i++)
{
    System.out.println(i);
}

향상된 for문

  • 향상된 for문을 사용하면 배열 및 컬렉션에 들어있는 모든 원소들에 대한 반복 작업을 매우 쉽게 처리할 수 있다.
  • 향상된 for문의 구조
    for(자료형 배열의값을담을변수: 배열의이름)
    {
    실행문;
    }
String[] strArray = {"Java", "Android", "C", "JavaScript", "Python"};
for(String lang: strArray)
{
    System.out.println(lang);
}

탈출문

  • 탈출문은 프로그램의 실행 순서를 지정된 곳으로 이동시키는 문장으로 반복문 또는 블록구조에서 빠져 나올 때 사용한다.
  • 탈출문의 키워드는 break, continue, return문이 있다.
  • goto는 자바의 키워드에는 포함되어 있으나, 사용하지는 않는다.

break

  • break는 반복문 내의 어떤 곳이든 위치할 수 있으며, 처리 도중에 break를 만나면 반복문을 곧바로 빠져나온다.
  • 중첩 반복문의 경우에 내부 반복문에서 break가 사용되었을 경우 그 break문이 속한 내부 반복문만 빠져나오게 된다.
  • 중첩 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(label)을 붙이고 "break 이름;"을 사용하면 된다.
start: for (char u = 'A'; u <= 'Z'; u++)
		{
        	for (char l = 'a'; l <= 'z'; l++)
            {
            	System.out.println(u + "-" + l);
                if(l == 'c')
                	break start;
            }
        }

continue

  • continue문은 반복문 내의 어떤 곳이든지 위치할 수 있따.
  • continu문을 만나면 반복문의 맨 처음으로 제어가 이동하여 다음 반복문을 위한 증감식을 실행한다.
  • continue문을 만날 때마다 이후 실행문은 건너뛰어 실행되지 않는다.
for (int i = 0; i <= 10; i++)
{
	if (i % 2 == 0)
    	continue;
    sum += i;
}

return

  • return문은 메서드의 실행을 끝내고 결과 값을 호출된 부분에 반환하는 문장이다.
  • return문만 단독으로 사용했을 때는 호출된 곳으로 제어만 넘어가지만, return문 뒤에 연산식과 함께 사용되면 식의 결과 값과 제어가 함께 넘어간다.
public static int add (int n1, int n2)
{
    return (n1 + n2);
}

출처: do it 자바프로그래밍 입문

profile
정팔입니다.

0개의 댓글