Home 자바 입문기4
Post
Cancel

자바 입문기4

Java는 백기선님의 유튜브를 통해 공부한다.

목표

자바가 제공하는 제어문을 학습하세요.

학습할 것

  • 선택문(필수)
  • 반복문(필수)
  • 과제 (옵션)
    • 과제 0. JUnit 5 학습하세요.
      • 인텔리J, 이클립스, VS Code에서 JUnit 5로 테스트 코드 작성하는 방법에 익숙해 질 것.
      • 이미 JUnit 알고 계신분들은 다른 것 아무거나!
      • 더 자바, 테스트 강의도 있으니 참고하세요~
    • 과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.
      • 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
      • 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
      • Github 자바 라이브러리를 사용하면 편리합니다.
      • 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.
    • 과제 2. LinkedList를 구현하세요.
      • LinkedList에 대해 공부하세요.
      • 정수를 저장하는 ListNode 클래스를 구현하세요.
      • ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요.
      • ListNode remove(ListNode head, int positionToRemove)를 구현하세요.
      • boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요.
    • 과제 3. Stack을 구현하세요.

      • int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요.
      • void push(int data)를 구현하세요.
      • int pop()을 구현하세요.
    • 과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요.

      • ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요.
      • void push(int data)를 구현하세요.
      • int pop()을 구현하세요.
    • 과제 5. Queue를 구현하세요.

      • 배열을 사용해서 한번.
      • ListNode를 사용해서 한번.

선택문

Ref

Java 언어에서는 특정 데이터의 값에 따라 수행할 구문을 선택하는 문법을 제공한다.
이와 같은 문법을 일반적으로 선택문이라 부르며 switch case 문이라고도 부른다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch(변수){                  // 변수 입력
 
case 상수:                //타입에 맞는 상수가 오면 해당 케이스 실행
statment;    
break;                   //실행시 break되며 다음 case무시 후 swtich 벗어남
                         //break가 없으면 아래 모든 case와 default 실행
                         
case 상수:                //이전 case에 속하지 않으면 다른 case에 접근
statment;                
break; 

default:                 //모든 case에 해당하지 않으면 default 실행
statment;                 
break;
}

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;
    }
  }
}

코드를 작성 후 실행 시켜주면
실행1



현재 num = scan.nextInt(); 에서 다음 변수 입력을 기다리고 있는데

아래에 2를 입력해 주게 되면
실행2




case 2에 접근하여 실행문을 실행하는 것을 볼 수 있다. 그 후 break 걸리며 switch를 빠져나오고 종료

조건문

Ref

Java 언어에서는 특정 조건에 따라 수행할 작업을 결정하는 조건문을 제공한다.
조건문은 크게 두가지가 있다.

  • 특정 조건이 일 때 수행할 작업을 표현하는 if
  • 특정 조건이 일 때 수행할 작업과 거짓일 때 수행할 작업을 표현하는 if else

if 문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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문 결과

블록{}이 있을 때의 결과
실행4






if문의 블록{}을 없앴을 때의 결과
실행3






짝수를 입력하였을때 결과
실행5





if else문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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문 결과

실행6




반복문

코딩을 자동으로 반복하는 구문을 반복문이라고 한다.
반복문에는 for문과 while문이 있다.

for문

1
2
3
for(int i = 0;  i < 10;  i==){
System.out.println(i);
}

for문은 위와 같이 나타낼 수 있는데,
for다음 (변수초기화; 조건문; 변수 증감식)으로 나타낸다.
결과는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9

while문

1
2
3
while(조건){
    반복 실행 영역
}

while문은 위와 같이 조건이 참이면 반복하는 구문이다.
조건에 truefalse값을 넣어도 되고, 변수를 넣은 후
반복문 안에서 변수++등을 이용하여 빠져나오게 만들 수 있다.

do while문

do while문은 조건과 상관없이 한 번 반복문을 실행하고
조건 충족이 되면 반복문을 다시 실행하는 구문이다. 나머지는 while과 동일

continue

반복문에 continue;구문이 들어가게 되면
해당 반복문의 반복부분을 뛰어넘고 다음 부분으로 넘어가게 된다.
예를들어,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
      }
    }
  }

와 같이 코딩하게 되면, i5가 되었을때 continue되어 해당 반복을 뛰어넘는다.

1
2
3
4
5
6
7
8
1
2
3
4
6         //5 를 뛰어넘고 6
7
8
9

break

조건문에서와 같이 break를 만나면 바로 반복문을 벗어난다.

과제 0. JUnit 5 학습하세요.

Ref

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(“name”)
@DisplayNameGeneration테스트 클래스에 대한사용자 지정 표시 이름 생성기를 선언
@BeforeEach해당 메서드가 다른 테스트 메서드보다 먼저 실행되어야 함을 나타냄
@AfterEach해당 메서드가 다른 테스트 메서드 이후에 실행되어야 함을 나타냄
@BeforeAll해당 메서드가 현재 클래스의 모든 테스트 메서드보다 먼저 실행되어야 함을 나타냄
@AfterAll해당 메서드가 현재 클래스의 모든 테스트 메서드 이후에 실행되어야 함을 나타냄
@Nested해당 클래스가 비 정적 중첩 테스트 클래스임을 나타냄
@Tag클래스 또는 메서드 수준에서 테스트 필터링을위한 태그를 선언하는 데 사용
@Disabled테스트 클래스 또는 테스트 메서드를 비활성화하는 데 사용
@Timeout실행이 주어진 기간을 초과시 테스트 메서드들이 실패
@RegisterExtension필드를 통해 프로그래밍 방식으로 확장하는 데 사용
@TempDirlife cycle 또는 테스트에서 필드 또는 매개 변수 주입을 통해 임시 디렉토리를 제공

과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.

깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것. 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것. Github 자바 라이브러리를 사용하면 편리합니다. 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다.

과제 2. LinkedList를 구현하세요. LinkedList에 대해 공부하세요. 정수를 저장하는 ListNode 클래스를 구현하세요. ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요. ListNode remove(ListNode head, int positionToRemove)를 구현하세요. boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요.

과제 3. Stack을 구현하세요. int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요. void push(int data)를 구현하세요. int pop()을 구현하세요.

과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요. ListNode head를 가지고 있는 ListNodeStack 클래스를 구현하세요. void push(int data)를 구현하세요. int pop()을 구현하세요.

과제 5. Queue를 구현하세요. 배열을 사용해서 한번 ListNode를 사용해서 한번.

This post is licensed under CC BY 4.0 by the author.

자바 입문기3

자바 입문기 5.클래스