멋사 Backend 29일차 🦁 JAVA 특강

신재원·2023년 5월 31일

현업에서의 요구사항

분석 ➡ 설계 (UML, E-R 다이어그램) ➡ 개발 ➡ 테스트 (QA) ➡ 배포 ➡ 운영 순서로 요구사항이 처리됩니다.

📃 Java

📣 Junit 테스트

Junit 이란 ?

단위 테스트를 작성하고, 실행하기 위한 테스트 프레임 워크입니다.

자바에서는 Assertions.assertjAssertions.junit 을 지원합니다.

🙋‍♂️ Assertions.assertj 의 라이브러리의 일종인 Assertions.assertThat()assertThat()을 사용하면 가독성과, 유연성 및 테스트 코드를 작성하는데 편리하여 많이 사용합니다.

  • 코드 예시
    @Test 어노테이션을 사용함, .isEqualsTo() 등 다양한 메소드 제공
  @Test
    void 실행_메시지() {
        String compareMessage = "숫자를 입력해주세요 : ";
        String requestNumberMessage = view.requestNumberMessage();
        assertThat(compareMessage).isEqualTo(requestNumberMessage);
    }

재귀 호출

재귀 호출이란 ?

메서드가 자기 자신을 호출하는 것을 말합니다. 즉, 메서드 내부에서 자신을 호출하여 작업을 수행합니다.
코드를 통해 설명 하겠습니다.

public class Factorial {

    public int calculate(int n) {
        // 종료 조건: n이 0이면 1을 반환
        if (n == 0) {
            return 1;
        }
        // 재귀 호출: n과 n-1을 곱한 값을 반환
        // 종료 조건으로 수렴하는것을 볼수 있음
        return n * calculate(n - 1);
    }

    public static void main(String[] args) {
        Factorial c = new Factorial();
        int result = c.Factorial(5);
        System.out.println(result);  // 출력 : 120
    }
}

재귀 호출의 중요 체크 사항

  1. 재귀 함수의 종료 조건
  • 재귀 호출이 멈추는 조건을 정의합니다.
  • 이는 무한 반복을 방지합니다.
  1. 기본 동작
  • 메소드 호출 단계에서 수행되어야 할 코드를 작성합니다.
  1. 재귀 호출

자기 자신의 메소드를 호출하여 작업을 반복합니다.
❗❗ 이때 입력이 점차 작아져야 하며, 종료 조건으로 수렴해야됩니다.

람다 표현 & Stream

  • 자바 스트림과 람다 표현식은 Java 8 부터 도입된 기능입니다.

📢 람다 (Lambda)

  • 기존 방식

✔ 메소드를 만들어 기능을 구현합니다.

public String print() {
 return "Hello World!";
}
  • 람다 표현 방식

✔ 메소드를 만들어 사용하지않고,

괄호 () 와 화살표 -> 를 이용해 메소드를 선언합니다.
(매개변수, 매개변수, ... ) -> { 실행문 ... }
📢 예시
() -> {System.out.println("안녕하세요"}

Runnable runnable = () -> {
    System.out.println("Hello World!");
};

📢 스트림 (Stream)

  • 기존 방식
    (반복문과 조건문이 존재)
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(2, 3, 4, 5, 6, 7, 8, 9, 10);

        for (Integer number : numbers) {
            if (number % 2 == 0) {
                System.out.println(number);
            }
        }
    }
}
  • 스트림 방식
    (메소드를 알아야함)
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(2, 3, 4, 5, 6, 7, 8, 9, 10);

        numbers.stream() // 스트림으로 변환
                .filter(number -> number % 2 == 0) // 짝수를 필터링 하는 조건
                .forEach(System.out::println); // forEach를 통해 원소 출력
    }
}

.stream() : 스트림으로 변환
.filter(조건) : 필터링 하는 조건을 작성
.forEach(출력) : 반복할 로직

람다 표현 & Stream의 장점

  • 불필요한 반복문과 조건문이 줄어 코드가 간결해지고 가독성이 향상됩니다
  • 코드 재사용과 유지 보수성을 높일수 있습니다.
    📍 ( 단점으로는 작성 방법을 알아야 한다는 점이다. )
    📍 ( 디버깅이 어려워 남발하지는 않는것이 좋습니다. )

0개의 댓글