Java 입문기 04. 제어문
Java는 백기선님의 유튜브를 통해 공부한다.
목표
자바가 제공하는 제어문을 학습하세요.
학습할 것
- 선택문(필수)
- 반복문(필수)
선택문
Java 언어에서는 특정 데이터의 값에 따라 수행할 구문을 선택하는 문법을 제공한다.
이와 같은 문법을 일반적으로 선택문이라 부르며 switch case
문이라고도 부른다.
switch(변수){ // 변수 입력
case 상수: //타입에 맞는 상수가 오면 해당 케이스 실행
statment;
break; //실행시 break되며 다음 case무시 후 swtich 벗어남
//break가 없으면 아래 모든 case와 default 실행
case 상수: //이전 case에 속하지 않으면 다른 case에 접근
statment;
break;
default: //모든 case에 해당하지 않으면 default 실행
statment;
break;
}
예시
import java.util.Scanner; //스캐너를 이용하기위해 import한다.
public class App {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int num = 1;
System.out.println("정수 입력");
num = scan.nextInt();
switch (num) {
case 1:
System.out.println("One");
break;
case 2:
System.out.println("Two");
break;
case 3:
System.out.println("Three");
break;
default:
System.out.println("Other");
break;
}
}
}
코드를 작성 후 실행 시켜주면
현재 num = scan.nextInt();
에서 다음 변수 입력을 기다리고 있는데
아래에 2를 입력해 주게 되면
case 2
에 접근하여 실행문을 실행하는 것을 볼 수 있다.
그 후 break
걸리며 switch
를 빠져나오고 종료
조건문
Java 언어에서는 특정 조건에 따라 수행할 작업을 결정하는 조건문을 제공한다.
조건문은 크게 두가지가 있다.
- 특정 조건이
참
일 때 수행할 작업을 표현하는if
문 - 특정 조건이
참
일 때 수행할 작업과거짓
일 때 수행할 작업을 표현하는if else
문
if 문
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num;
System.out.println("정수를 입력하세요.");
num = scan.nextInt();
if ((num % 2) == 0){ // if문
System.out.println(num + "은 짝수"); //블록이 없으면 바로 아래 하나의 구문만 실행
System.out.println("입력받은 수:" + num); //블록으로 덮어준다면 여러 구문 실행
}
}
}
if문 결과
- 블록
{}
이 있을 때의 결과
- if문의 블록
{}
을 없을 때의 결과
- 짝수를 입력하였을때 결과
if else문
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num;
System.out.println("정수를 입력하세요.");
num = scan.nextInt();
if ((num % 2) == 0) {
System.out.println(num + "은 짝수");
} else { //거짓일때
System.out.println(num + "은 홀수");
}
}
}
if문과 마찬가지로 실행문이 여러 구문이면 블록으로 감싸준다.
if else문 결과
반복문
코딩을 자동으로 반복하는 구문을 반복문이라고 한다.
반복문에는 for
문과 while
문이 있다.
for문
for(int i = 0; i < 10; i==){
System.out.println(i);
}
for문
은 위와 같이 나타낼 수 있는데,for
다음 (변수초기화;
조건문;
변수 증감식
)으로 나타낸다.
결과는 다음과 같다.
0
1
2
3
4
5
6
7
8
9
while문
while(조건){
반복 실행 영역
}
while문
은 위와 같이 조건이 참이면 반복하는 구문이다.
조건에 true
나false
값을 넣어도 되고, 변수를 넣은 후
반복문 안에서 변수++등을 이용하여 빠져나오게 만들 수 있다.
do while문
do while문은 조건과 상관없이 한 번 반복문을 실행하고
조건 충족이 되면 반복문을 다시 실행하는 구문이다. 나머지는 while과 동일
continue
반복문에 continue;
구문이 들어가게 되면
해당 반복문의 반복부분을 뛰어넘고 다음 부분으로 넘어가게 된다.
예를들어,
public class Operator {
public static void main(String[] args) {
int i;
int j;
for( i = 1; i <= 9 ; i++){
if(i==5){
continue;
}
System.out.println(i);
}
}
}
와 같이 코딩하게 되면, i
가 5
가 되었을때 continue
되어 해당 반복을 뛰어넘는다.
1
2
3
4
6 //5 를 뛰어넘고 6
7
8
9
break
조건문에서와 같이 break
를 만나면 바로 반복문을 벗어난다.
과제 0. JUnit 5 학습하세요.
JUnit5 란
- 자바 개발자가 가장 많이 사용하는 단위테스트 프레임워크이다.
- Java8 이상을 필요로 한다.
- 3개의 컴포넌트(모듈로 구성)
- Junit Platform : 테스트의 런처, TestEngine의 인터페이스 API
- Jupiter : TestEngine의 구현체, junit5 제공
- Vintage : TestEngine의 구현체, junit3,4 제공
- 실제 intelliJ에서 실행시 Junit Platform으로 실행
주석 | 내용 |
@Test | 메서드가 테스트 메서드임을 나타냄 |
@ParameterizedTest | 메서드가 매개 변수가 있는 테스트임을 나타냅니다. |
@RepeatedTest | 메서드가 반복 테스트를 위한 테스트 템플릿임을 나타냅니다. |
@TestFactory | 메서드가 동적 테스트를 위한 테스트 팩토리임을 나타냅니다 |
@TestTemplate | 메서드가 여러 번 호출되도록 설계된 테스트 사례의 템플릿임을 나타냄 |
@TestMethodOrder | 해당 테스트 클래스에 대한 테스트 메서드 실행 순서를 구성하는 데 사용 @Order(정수 값) : 정한 정수 값을 순서대로 설정한다. |
@TestInstance | 해당 클래스에 대한 테스트 인스턴스 수명주기를 구성하는 데 사용 |
@DisplayName | 테스트 클래스 또는 테스트 메서드에 대한 사용자 지정 표시 이름을 선언 @DisplayName("아무거나") |
@DisplayNameGeneration | 테스트 클래스에 대한 사용자 지정 표시 이름 생성기를 선언 |
@BeforeEach | 해당 메서드가 다른 테스트 메서드보다 먼저 실행되어야 함을 나타냄 |
@AfterEach | 해당 메서드가 다른 테스트 메서드 이후에 실행되어야 함을 나타냄 |
@BeforeAll | 해당 메서드가 현재 클래스의 모든 테스트 메서드보다 먼저 실행되어야 함을 나타냄 |
@AfterAll | 해당 메서드가 현재 클래스의 모든 테스트 메서드 이후에 실행되어야 함을 나타냄 |
@Nested | 해당 클래스가 비 정적 중첩 테스트 클래스임을 나타냄 |
@Tag | 클래스 또는 메서드 수준에서 테스트 필터링을위한 태그를 선언하는 데 사용 |
@Disabled | 테스트 클래스 또는 테스트 메서드를 비활성화하는 데 사용 |
@Timeout | 실행이 주어진 기간을 초과시 테스트 메서드들이 실패 |
@RegisterExtension | 필드를 통해 프로그래밍 방식으로 확장하는 데 사용 |
@TempDir | life cycle 또는 테스트에서 필드 또는 매개 변수 주입을 통해 임시 디렉토리를 제공 |