제어문과 메서드
제어문 종류
조건문
- 조건식의 결과에 따라 여려 실행 경로 중 하나를 선택, if문, switch문
반복문
- 조건에 따라 같은 처리를 반복, for문, while문, do ~ while 문
분기문
- 실행 흐름을 무조건 변경, break문, continue문
조건문
조건에 따라 실행문을 선택할 때 사용
단순 if문
- 조건식이 true일 때만 실행문을 수행
- 조건식에는 true, false 를 산출할 수 있는 연신식, 논리값, 변수가 올 수 있음
- 조건식이 true 일 때 수행할 실행문이 하나라면, {}를 생략가능
다중 if문
- 조건식이 다양할 때 사용
- if문 다음에 else if문을 연속 추가해 각조건을 차례대로 점검한 후 만족하는 실행문을 수행
if (조건식1) {
실행문(들); 조건식 1이 참일 때만 실행
}
else if (조건식 2) {
실행문(들); 조건식 1이 거짓이고, 조건식 2가 참일 때만 실행
}
else if (조건식 3) {
...
}
else {
실행문(들); 모든 조건을 만족하지 않을 때만 실행
}
- 중첩 if 문
- if 문에 다른 if문이 포함되는 것을 중첩 if문이라고 한다.
- 주의사항 두 개 이상의 if 뒤에 else 가 걸리면, 그 else는 가장 가까운 if의 else로 들어간다.
package chap03;
import java.util.Scanner;
public class NestedIfDemo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String grade;
System.out.print("점수를 입력하세요 : ");
int score = in.nextInt();
if (score >= 90)
grade = "A";
else {
if (score >= 80)
grade = "B";
else {
if (score >= 70)
grade = "C";
else {
if (score >= 60)
grade = "D";
else
grade = "F";
}
}
}
System.out.println("당신의 성적은 " + grade);
}
}
반복문
while 문
- 반복할 횟수는 미리 알 수 없지만, 조건을 알 수 있을 때 주로 사용하는 반복문
- 조건식이 true일 동안 본체 실행문을 반복적으로 수행
while (false) 라면 도달하지 않는 코드라는 오류가 발생함
do ~ while 문
- 반복문 본체를 먼저 실행한 후, 조건식을 평가, 따라서 최소 한번은 반복문 본체를 실행함
package chap03;
public class DoWhile2Demo {
public static void main(String[] args) {
int i = 10;
do {
i++;
} while (i < 5);
System.out.println("do~while 문 실행 후 : " + i); // do while 문 한번은 실행됨
i = 10;
while (i < 5) {
i++;
}
System.out.println("while문 실행 후 : " + i); // while 실행안됨
}
}
Practice 3_4
package chap03;
import java.util.Scanner;
public class Practice3_4 {
public static void main(String[] args) {
int sum = 0;
Scanner in = new Scanner(System.in);
do {
System.out.print("양의 정수를 입력하세요 : ");
int i = in.nextInt();
if (i <= 0)
break;
if (i % 2 == 0)
sum += i;
} while (true);
System.out.println("입력한 양의 정수 중에서 짝수의 합은 " + sum);
}
}
for문
반복할 횟수를 미리 알 수 있을 떄 주로 사용하는 반복문
조건식이 true 이면 본체 실행문을 반복적으로 수행
조건식이 false 면 실행문과 증감식은 한 번도 실행되지 않는다.
반복과정: 초기식 실행 후, 조건식 평가, 조건식 false면 for문 종료하고 true면 반복문 본체 실행, 실행 후, 증감식 실행하고 또 조건식 평가 .. 반복
초기식, 조건식, 증감식을 생략하면 무한반복문이 됨.
for ( ; ; ) // 무한 반복문 ;
초기식이나 증감식이 2개 이상 필요하면 쉼표로 구분해서 작성
for (int i = 0, j = 10; i < j; i++,j--) {
... // 본체
}
분기문
무조건 다른 경로로 이동함. 현재 반복문을 종료하거나, 현재 반복을 마칠때 주로 사용, 흐름이 복잡해지므로, 꼭 필요할 때만 사용.
break 문
- 반복문이나 switch문의 본체를 벗어나려고 주로 사용함
continue 문
- 반복문에서만 사용되며, 현재 반복은 건너뛴채 나머지 반복만 계속 실행함
switch 문
- 콜론 레이블을 쓰는 기존 switch문
switch (변수) {
case 상수1 : 0개 이상의 실행문
...
default : 0개 이상의 실행문
}
이때 case에 걸리면, 그 때부터는 break없는 한 아래에 있는 실행문은 모두 실행한다고 보면 됨.
개선된 switch문
- 화살표 case 레이블 : 일치하는 case 레이블의 실행문만 수행하고, 다음 case레이블로 이동하지 않는다.
switch 연산식
- 값을 반환할 수 있는 연산식으로 사용할 수 있다.
다중 case 레이블
- 콤마로 연결된 다수의 상수를 case레이블로 사용할 수 있다.
yield 예약어
- yield는 값을 반환하면서 switch 연신식을 종료하므로 yield 문 뒤에 break문이 필요없다.
package chap03;
public class Switch4Demo {
public static void main(String[] args) {
whoIsIt("호랑이");
whoIsIt("참새");
whoIsIt("고등어");
whoIsIt("곰팡이");
}
static void whoIsIt(String bio) {
String kind = switch (bio) {
case "호랑이", "사자" -> "포유류";
case "독수리", "참새" -> "조류";
case "고등어", "연어" -> "어류";
default -> {
System.out.print("어이쿠! ");
yield "...";
}
};
System.out.printf("%s는 %s이다.\n", bio, kind);
}
}
메서드
- 장점 : 중복코드 줄이고 코드 재사용 가능
- 코드를 모듈화해 가독성도 높아짐
- 메서드 오버로딩
- 메서드 시그너처(Method Signature) : 메서드 이름, 매개변수의 개수, 매개변수의 타입과 순서를 의미
- 메서드 이름은 같지만 메서드 시그니처가 다른 메서드를 정의하는 것을 메서드 오버로딩(Method Overloading)이라고 한다.
'TIL > [객체지향 프로그래밍] TIL' 카테고리의 다른 글
TIL (22.04.28) (0) | 2022.04.29 |
---|---|
TIL (22.04.19) 시험범위 4장 정리 (0) | 2022.04.20 |
TIL (22.04.14) (0) | 2022.04.17 |
TIL (22.04.16) 시험범위 정리 2장 (0) | 2022.04.16 |
TIL (22.04.16) 시험 범위 정리 1장 (0) | 2022.04.16 |