마코센세의 나이스샷 명강의를 듣고 감동을 받아 정리해보려한다! 땡큐 마코센세! new vs copyOf Java의 두 가지 복사 방법을 비교해보자. new를 통해 새로운 객체 생성 후 복사하기 copyOf 키워드 사용하기 new를 사용하여 복사하면 기존의 컬렉션과의 참조를 끊어버린다! (새로운 주소값) 하지만 가변이다. (나의 도플갱어가 생겼을 뿐이다. 얘가 지금부터 자기관리를 어떻게 하든 내 알 바 아니다!) copyOf를 사용하여 복사해도 기존 컬렉션과의 참조를 끊어버린다. 하지만 new와 다르게, 불변이다. (ImmutableCollection) (단, 원본이 불변이면 참조를 끊지 않는다. 복사할 때 참조를 끊어주는 이유에 대해 생각해보면 된다. 원본이 변할 때 복사본이 변할것을 대비해 참조를 끊어..
성동일은 아는데, 동일성은 뭘까? ㅋㅋ (죄송합니다) 동일성(Identity)은 두 객체의 메모리 주소가 같음을 의미한다. 동등성(Equality)은 두 객체의 값이 같음을 의미한다. 즉, 동일성은 유전자까지 똑같고, 동등성은 겉보기만 똑같은 것이다! 동일성은 나와 내 복제인간이라면, 동등성은 나와 내 도플갱어 쯤? java 에서 동일성은 ==로, 동등성은 equals로 확인 가능하다! 코드로 확인해보자! void 동일성() { List crews1 = List.of("ash", "ako", "maco"); List crews2 = crews1; System.out.println(crews1 == crews2); // true System.out.println(crews1.equals(crews2)); ..
JUnit5란? 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크이다. Java 8 이상에서 사용 가능하다. JUnit5는 크게 세 개의 모듈로 구성되어 있다. (JUnit4는 단일 jar) JUnit Platform: TestEngine 인터페이스를 정의한다. TestEngine을 통해 테스트를 발견하고, 실행하고, 결과를 보고한다. JUnit Jupiter: TestEngine 구현체 / Jupiter API(Junit5를 위한 테스트 API)를 사용해 작성한 테스트 코드를 실행할 때 사용한다. JUnit Vintage: TestEngine 구현체 / 기존 JUnit3,4 버전으로 작성한 테스트 코드를 실행할 때 사용된다. JUnit5 Gradle 의존성 Junit Jupiter API를 사용해 테..
IntelliJ에서 테스트코드를 작성할 때, Assertions 키워드를 작성하면 자동완성 기능으로 두 가지를 추천해준다. 하나는 org.junit.jupiter.api.Assertions이고, 하나는 org.assertj.core.api.Assertions이다. 강의를 듣거나 다른 사람들의 코드들을 보면, 보동 후자를 사용하곤 한다. 심지어 JUnit5 공식 문서에 가도 서드파티 라이브러리인 AssertJ 사용을 권장한다. 그러면, 왜 다들 AssertJ를 쓰는걸까? 1. 가독성 다음 두 가지 메서드를 보아라. // 1. assertEquals(a, b); // 2. assertThat(a).isEqualTo(b); 1번 코드를 보면 어느것이 실제 값이고, 어느 것이 예상 값인지 쉽게 유추할 수 없다...