본문 바로가기
반응형

자바39

자바의 변성 - 공변/무공변/반공변, 사용지점 변성과 선언 지점 변성 목차 · 변성 · 제네릭과 공변/무공변 · 와일드카드 타입과 공변/반공변 · 사용지점 변성과 선언 지점 변성 변성 변성(Variance)은 타입의 계층 관계에서 서로 다른 타입 간에 어떤 관계가 있는지 나타내는 개념이다. 해당 개념은 자바의 제네릭을 설명하기 위해 자주 사용된다. 변성에는 네 가지 종류가 있다. 공변(covariant), 반공변(contravariant), 이변량(bivariant), 무공변(or 불공변, invariant) 이 중에서 알아볼 것은 공변, 반공변, 무공변이다. 제네릭과 공변/무공변 공변은 사전적 의미로 '함께 변하는'이라는 뜻이다. 제네릭은 기본적으로 무공변(or 불공변, invariant)이다. 즉, 서로 다른 타입 Type1과 Type2가 있을 때, List은 List.. 2022. 2. 8.
[Java] 자바에서 XML을 파싱하는 방법 - DOM, SAX XML은 w3c에서 개발된 마크업 언어로, 여러 종류의 데이터를 기술하는 데 사용할 수 있다. 예시 - 주식 정보를 나타내는 XML Citibank 100 1000 Axis bank 90 2000 이러한 XML 문서를 파싱하는 방법에는 대표적으로 DOM과 SAX가 존재한다. 이 글에서는 두 방식의 차이와 각 방식의 자바 코드 예시를 제공한다. DOM · XML을 트리 형태의 데이터로 만든 후, 해당 데이터를 가공하는 방식으로 파싱을 진행한다. · XML 문서를 메모리에 모두 로드한 후 파싱한다. - 단점: 메모리를 많이 사용한다. - 장점: 구현과 구조변경이 쉽다. 코드 예시 파싱할 xml 파일은 위의 stock 정보를 갖는 xml로 한다. import java.io.File; import java.ni.. 2021. 12. 14.
[Java] 자바8의 새로운 날짜 관련 클래스들 - java.time 패키지 (LocalDate, LocalTime, LocalDateTime, ZonedDateTime) 자바 java.time 패키지 사용하기 학습 목표 · 날짜와 시간 객체 · 날짜와 시간에 대한 정보 얻기 · 날짜와 시간 조작하기 - 날짜와 시간 빼기와 더하기 - 날짜와 시간 변경하기 - 날짜와 시간 비교하기 -날짜 포맷 정하기 · 자바 7 이전까지는 Date, Calendar, SimpleDateFormatter 클래스를 이용해서 날짜와 시간 정보를 처리했지만, 여러 단점이 존재했다. TODO: 단점 정리 하지만 Date 클래스는 단순히 특정 시점의 날짜 정보를 저장하는 역할만을 하며, 대부분의 메소드가 Deprecated되었다. 또한 Calendar도 날짜 와 시간 정보를 얻는 것 외에 날짜와 시간은 조작하거나 비교하는 기능이 부족했다. 이러한 기존 버전의 문제점을 해결하기 위해서 자바 8부터 날짜.. 2021. 12. 13.
[Java] if-else vs switch, 조건문의 속도 차이와 그 이유 다음과 같이 같은 기능을 하는 switch문과 if문을 작성해보자. public class SwitchAndIf { public static void switchTest(int num) { switch (num) { case 1: System.out.println("숫자 1입니다."); break; case 2: System.out.println("숫자 2입니다."); break; case 3: System.out.println("숫자 3입니다."); break; case 4: System.out.println("숫자 4입니다."); break; case 5: System.out.println("숫자 5입니다."); break; default: System.out.println("알 수 없는 숫자입니다... 2021. 12. 5.
[Algorithm] 구현 문제란? 학습 목표 · 구현 문제란? · 구현 시 고려해야 할 메모리 제약 사항 · 채점 환경 · 구현 문제에 접근하는 방법 구현 문제란? 코딩 테스트에서 구현 · 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 구현 문제 · 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 - 코딩 테스트에서는 구현이 중심이 되는 문제가 자주 출제된다. - ex) 완전 탐색, 시뮬레이션 유형 ▶ 완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 ▶ 시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행해야 하는 문제 구현하기 어려운 문제란? 1. 알고리즘은 간단한데 코드가 치나칠 만큼 길어지는 문제 2. 특정 소수점 자리까지 출력해야 하는 문제 3. 문자열이 입력으로 주어졌을 때 한 문자 .. 2021. 11. 6.
[Junit] AssertJ란? 학습 목표 · AsserJ란? · AsserJ의 장점 · TODO: AssertJ의 단점 · 라이브러리 의존성 설정 · AssertJ 메소드 임포트 · 사용 방법 · 잘못된 사용 예시 AsserJ란? · 단언문(assertion)을 작성하기 위한 풍부한 인터페이스를 제공하는 자바 라이브러리로, 테스트 코드의 가독성을 향상시키고 테스트 유지 관리를 더 쉽게 만드는 것을 주요 목적으로 한다. · JUnit의 단언에 대한 표현력 부족을 보완한다. · spring-boot-starter-test에 기본적으로 포함된다. AssertJ의 장점 · 메서드 체이닝을 지원하여 깔끔하고 읽기 쉬운 테스트 코드를 작성 가능하다. · 타입별로 다양한 검증 메서드를 제공한다. - 개발자가 테스트를 하면서 필요하다고 상상할 수 .. 2021. 10. 30.
반응형