자바 프로그램은 main( ) 메서드의 시작 중괄호 {에서 끝 중괄호 }까지 위에서 아래로 실행하는 흐름을 가지고 있음.
이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것을 흐름 제어문 혹은 제어문이라고 한다.
제어문의 종류에는 조건문과 반복문이 있다.
조건문
- 조건식에 따라 다른 실행문을 실행하기 위해 사용
- if문 : 조건식 결과의 true.fasle 여부에 따라 실행문 결정
- switch문 : 변수의 값에 따라 실행문 결정
if문
- 조건식 결과에 따라 블록 실행 여부 결정
- 조건식에 올 수 있는 요소 ( true / false 값을 산출하는 연산식, boolean 타입 변수)
- 중괄호 블록은 조건식이 true가 될 때 {중괄호 블록 }실행 /false가 될땐 실행x
- (실행할 문장 하나뿐인 경우 생략 가능하지만 괄호 되도록 붙일것)
- if(조건식) {...} 구조. 조건식이 true가 되면 {...}실행
위의 조건문은 중괄호를 달아주어 정상실행이 되었지만
밑에 조건문은 중괄호가 없어 바로 아래줄에 있는 실행문 까지가 범위가 되어 밑의 줄은 특별한 조건 없이 실행됨
if-else문
- if문을 else블록과 함께 사용
- 조건식의 결과에 따라 실행블록 선택 (if문 조건식 true이면 if문 블록 실행, false면 else 블록 실행)
- 즉 if (조건식) {...} else {...} 구조. 조건식이 true이면 첫번째 {...} 중괄호 실행되고 else 블록은 실행안됨 false이면 첫번째 중괄호 실행안되고 else문 중괄호 실행됨
조건식에 false를 주어 실행문B로 분기함
if-else if-else문
- 조건식이 여러개인 if문
- if(조건식1) {...} else if(조건식2) {...} else {...} 구조. 첫번째 조건식이 true 가 나오면 else if랑 else는 실행x . 조건식2가 true 가 나오면 조건식 2의 else if {...} 만 실행. 조건식 1과 2가 모두 false면 else {...} 만 실행
- 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록 선택
- if블록 끝에 else if문 추가
- else if문 개수는 제한 없음
(Math.random() 메소드
Math.random() // 0.0~1.0 사이 실수 리턴 (1.0은 포함X)
(int) (Math.random() * 10) // 0~ 10사이 정수 리턴 (10은 포함X)
(int) (Math.random() * 10)+1 //0~ 10사이 정수 리턴
조건문이 true가 되는 블록만 실행됨
switch문
- 변수가 어떤 값을 갖는가에 따라 실행문 선택
- switch (변수) { case 값1: ... case 값2: ... default: ... }를 말하며 변수의 값1이면 첫번째 case코드를 실행하고, 값2이면 두번째 case코드를 실행한다. 값1 과 값2가 모두 아니면 default 코드를 실행
- 같은 기능의 if문보다 조건문을 일일히 붙여줄 필요가 없어 코드가 간결
- break있는 경우/break없는 경우(실행된거 아래로 쭉쭉다 출력)
위와 같이 grade에 대문자가 입력되어도 해당 case에 실행문이 없기 때문에
case 'b'가 실행된 후 break 된다.
반복문
- 반복문에는 for문, while문, do-while문이 있음.
- 반복문은 어떤 작업을 반복적으로 실행하고 싶을 때 사용
- 제어문 처음으로 되돌아가 반복 실행하는데 이것을 루핑(looping)이라고 함.
- 반복문을 빠져나갈때는 break문 반복문의 처음으로 돌아갈 때에는 continue 문을 씀.
for문
- for (초기화식; 조건식; 증감식) {실행문;}
- 지정한 횟수만큼 반복할 때 주로 사용
- 즉, 반복 횟수 알고 있을 때 사용
int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
sum = sum + 4;
sum = sum + 5;
.
.
.
.
sum = sum + 100;
System.out.println("1~100의 합:" + sum);
- 위와 같은 덧셈 연산을 더 간단하게 작성하기 위해 for 문을 사용
int sum = 0;
for (int i=1; i<=100; i++) {
sum = sum + i;
}
System.out.println("1~100의 합 :" + sum);
- 초기화식 : 반복의 시작 지점 지정
- 조건식 : 언제까지 반복하는가
- 증감식 : 얼만큼 증가하는가
- 잘못작성된for문의 예
부동소수점 방식은 정확 값을 0.1을 표현하지 못해 10회가 아닌 9회만 반복됨
즉, for문 방식은 정수 타입를 사용할 것!!! for문에 flat타입 사용x
- 중첩for문
- for문 안쪽에 for문이 하나 더 있음
for문 안에 for문을 집어넣는 중첩 for문으로 만든 구구단 예제이다.
for (int m=2; m<=9; m++) {
System.out.println("*** " + m + "단 ***");
for (int n=1; n<=9; n++) {
System.out.println(m + " x " + n + " = " + (m*n));
n이 9 증가한 후 m이 1 증가하는 형식
while문
- 형식 : while(조건식) { 실행문; }
- 조건식이 true가 될 때까지 반복 실행
- 조건식이 앞에있음
- 조건식에는 주로 비교 연산식, 논리 연산식 사용
위와 같은 방법으로 사용한다.
do-while문
- do {실행문} while (조건식);
- 조건식이 뒤로 오며 조건식이 true일 경우 반복, false일 경우 탈출
- while문과 유사하나 조건을 나중에 검사
- 블록 내부 실행문을 우선 실행하고 그 결과에 따라 반복 실행 여부를 결정
- while문 뒤에 세미콜론 꼭 붙여주기
break문
- for, while, do-while, switch문의 실행을 중지할 때 사용
- 주로 if문과 함께 사용
주사위를 던져 눈이 6이 나오면 break를 작동시켜 while문을 빠져나가 프로그램을 종료시키게 하는 예제이다.
break-label
for문을 작성하기 전 label을 선언해놓으면 이중 반복문에서 특정 조건이 만족할 때 반복문을 빠져나갈 수 있게 된다.
위 코드에서는 label을 Outter로 선언해놓아 변수 값이 소문자 g가 되면 반복문을 빠져나가게 했다.
continue문
- for, while, do-while문에서만 사용
- for문은 증감 식으로, while, do-while문은 조건식으로 돌아감
- if문과 함께 사용
if(i%2 != 0)는 i가 홀수인지를 검사하는 식이며 만약 i가 홀수일 경우 continue를 통해 for문의 출력을 하지 말고 한번 더 증감식으로 되돌아가게 함
혼자공부하는 자바
'Java' 카테고리의 다른 글
[JAVA ] 참조 타입(배열) (0) | 2022.01.31 |
---|---|
[JAVA ] 참조 타입(참조타입과 참조변수) (0) | 2022.01.30 |
[Java]변수와 시스템 입출력 (0) | 2022.01.23 |
[Java] 연산자, 연산자의 종류 (0) | 2022.01.23 |
[Java] 변수 타입 변환 (0) | 2022.01.23 |