본문 바로가기
Java

Java Study 2주차

by 균진 2023. 10. 3.
  • 화살표 연산자(->), 람다
  • 3항 연산자
  • (optional) Java 13. switch 연산자
  • JUnit 5 학습, 실습
  • 자료구조 구현

화살표 연산자(->), 람다

  • 화살표 연산자(->)
    람다 표현식이라고도 하며 () -> {}의 형태를 가지고 있으며, 매개변수를 받아 함수를 실행한다.

  • 람다
    메소드를 하나의 식으로 표현한 것으로 익명메소드(함수)생성하는 문법이라고 할 수 있다.
    람다 표현식은 메소드를 하나의 식으로 표현한 것으로 메소드를 람다 표현식으로 표현하면, 클래스를 작성하고 객체를 생성하지 않아도 메소드를 사용할 수 있다.
    // 메소드
    Pasted image 20231009183937.png

    // 람다 표현식

    (매개변수) -> {실행문}의 형태를 가지고 있으며, 매개변수를 받아 메소드(함수)를 실행한다.
    매개변수가 하나라면 () 생략 가능하다.

    Pasted image 20231009184152.png
    -> 타입은 타입추론으로 생략 가능하다.

    위에 람다 표현식을 익명 클래스로 바꾸면 밑에 나와있는 것처럼 바꿀 수 있다.
    Pasted image 20231009185130.png
    람다의 장단점

    가독성이 좋아짐
    병렬 프로그래밍에 유리
    재사용이 불가능
    디버깅이 까다로움
    재귀를 만드는데는 힘듦

3항 연산자

(조건) ? (조건이 true일 때 실행) : (조건이 false일 때 실행)
의 형태이며, if조건문 대신 3항 연산자를 사해 코드를 짧게 할 수 있다.

Java 13. switch 연산자

switch/case문을 좀 더 간결하게 쓸 수 있어졌다.

Pasted image 20231009232903.png

기존의 switch 문에서 콜론(:)을 화살표로 변경하여 사용할 수 있고 break문을 생략할 수 있다.

Pasted image 20231009233010.png

식으로 사용될 수 있어 바로 변수로 할당할 수 있다.

Pasted image 20231009233120.png

break로 반환하는 문법이 Java13부터 yield(산출/생산하다)로 변경되었다.

Pasted image 20231009233215.png

JUnit 5 학습, 실습

  • JUnit5란 JUnit Platform과 JUnit  Jupiter, Junit Vintage 결합한 형태로 테스팅 기반 프레임워크이다.

Pasted image 20231010104055.png

-JUnit Platform : 테스트를 실행해주는 런처와 TestEngine API를 제공함
- Jupiter : TestEngine API 구현체로 JUnit5에서 제공함
- Vintage : TestEngine API 구현체로 JUnit3, 4에서 제공함

  • JUnit5 어노테이션
    @Test : 테스트 method임을 선언
    @ParameterizedTest : 매개변수를 받는 테스트 작성할 수 있다.
    @RepeatedTest : 반복되는 테스트를 할 수 있다.
    @BeforeEach : 모든 테스트 실행 전에 실행할 테스트에 사용함
    @AfterEach : 모든 테스트 실행 후에 실행한 테스트에 사용

  • 테스트 클래스
    하나 이상의 테스트 메소드를 포함하는 최상위 클래스, static 멤버 클래스 또는 중첩 클래스이어야 한다. 또한, 테스트 클래스는 추상 클래스로 정의되면 안 되며, 단일 생성자만 가져야 한다.

  • 테스트 메소드는 ‘@Test, @RepeatedTest, @ParameterizedTest, @TestFactory, @TestTemplate’ 중 하나의 어노테이션으로 선언된 메소드를 말한다.

  • 생명 주기 메소드는 ‘@BeforeAll, @AfterAll, @BeforeEach, @AfterEach’ 중 하나의 어노테이션으로 선언된 메소드를 말한다.

  • 테스트 메소드와 생명 주기 메소드는 모두 추상 메소드로 정의되면 안 되며, 값을 반환해서도 안 된다. 그리고 두 메소드는 non-static인 인스턴스 메소드이어야 한다.

자료구조 구현

'Java' 카테고리의 다른 글

Queue  (0) 2023.10.10
ListNode를 사용한 Stack  (0) 2023.10.10
Stack  (0) 2023.10.10
LinkedList  (0) 2023.10.10
익명메소드(함수)  (0) 2023.10.09