programming/JAVA
-
[Java] 특수문자를 사용한 문자열 splitprogramming/JAVA 2022. 6. 12. 15:45
자바에서 특수문자를 사용한 split을 사용할 때는 주의해서 사용해야 한다. 콤마(,)를 사용할 때는 아래와 같이 사용하면 문자열을 구분자로 나누어 배열로 사용할 수 있다. String str2 = "AAAAA,BBBBB,CCCCC"; for (String s : str2.split(",")) { System.out.println(s); } 하지만, 특수문자를 사용할 때는 아래와 같이 "\\"를 포함하여 사용해야, 구분자로 사용해서 배열로 나눌 수 있다. @Test @DisplayName("split 테스트") void splitTest(){ String str = "AAAAA|BBBBB|CCCCC"; String[] expect1 = new String[]{"A","A","A","A","A","|","..
-
[Java] LocalDate Unsupported field: HourOfDayprogramming/JAVA 2022. 6. 6. 00:26
LocalDate.format을 이용해서 날짜를 표현할 때 발생하는 에러다. @Test void localDateTest1(){ DateTimeFormatter yyyyMMddHHmmss = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); LocalDate localDate = LocalDate.of(2022,06,06); localDate.format(yyyyMMddHHmmss); } 위 코드를 실행시켜보면 아래와 같이 에러가 발생한다. 해당 에러는 LocalDate에서 시간을 표현하는 포맷을 사용해서 발생한 에러다. format을 "yyyyMMdd" 형식으로 바꾸던지, LocalDateTime을 사용하면 에러는 발생하지 않는다. @Test @DisplayName("..
-
[Java] Arrays.asList(int[]) 의 잘못된 사용programming/JAVA 2022. 3. 27. 20:59
Arrays.asList() 는 배열을 List로 바꿔주는 것으로 알고 있었다. 그래서 아래와 같은 코드를 의심 없이 작성하였다. (코드를 작성할 때 의도한 것은 2,4를 배열에 넣고, 3,4가 해당 배열에 있는지, 없는지 확인하는 코드이다.) int[] int_numbers = {2,4}; Integer[] integer_numbers = {2,4}; @DisplayName("List.contains 테스트") @Test void listContainsTest(){ assertAll( ()->assertFalse(Arrays.asList(int_numbers).contains(3) , "int_numbers contains 3"), ()->assertTrue(Arrays.asList(int_number..
-
[Java] Builder 어노테이션 기본값 사용하기(Builder.Default)programming/JAVA 2021. 12. 31. 14:16
@Builder 빌더 패턴을 사용하기 위해서 Lombok의 Builder 어노테이션을 사용할 수 있다. 아래처럼 해당 클래스에 붙여서 사용할 수 있다. import lombok.Builder; import lombok.ToString; @Builder @ToString public class Member { String id; int age; } @Builder Test Builder는 아래처럼 사용하면 된다. public class MemberTest { @Test void memTest(){ Member mem = Member.builder().build(); System.out.println(mem); } } 이때는 기본값이 설정되어 있지 않기 때문에 실행결과는 아래와 같다. @Builder.Def..
-
[Java] junit Disabled 어노테이션 사용하기programming/JAVA 2021. 11. 26. 21:18
@Disabled 어노테이션 사용하기 아래 코드는 2개의 테스트를 실행하기 위한 테스트 코드다. @SpringBootTest public class DisabledTest { @Test void test1(){ int result = 1; assertEquals(1,result); } @Test void test2(){ int result = 2; assertEquals(2,result); } } 인텔리제이에서 실행하면 두 개의 메소드 모두 실행되고 아래와 같이 보인다. 항상 모든 테스트를 같이 확인할 수 도 있지만, 일부 테스트를 제외하고 실행시키고 싶을 때, @Disabled를 사용할 수 있다. @Disabled가 적용된 코드 @Test @Disabled void test2(){ int result ..
-
[Java] 테스트메소드에 이름 붙이기programming/JAVA 2021. 11. 24. 00:12
테스트 코드 작성 중 메소드 이름은 영어로 적고 보여주는 이름만 따로 붙이고 싶을 때, @DisplayName 어노테이션을 사용해서 해결할 수 있다. @DisplayName이 없을 때 아래와 같은 코드를 실행하면 @Test void two_Plus_One(){ int num1 = 2; int num2 = 1; int result = num1 + num2; int expected = 3; assertEquals(expected, result); } 인텔리제이에선 아래 스크린샷처럼 보인다. @DisplayName을 작성했을 때 위의 코드에서 @DisplayName 어노테이션만 추가로 작성했다. @Test @DisplayName("2 + 1 = 3일 것인가?") void two_Plus_One(){ int n..
-
[Java] Queue 사용하기(add vs offer)programming/JAVA 2021. 7. 21. 21:24
Queue 사용법 Java에서 정의되어 있는 Queue를 사용해보자. 무심코 아래와 같이 작성하면 생각한 대로 작동하지 않는다. Queue queue = new Queue(); IDE를 사용해서 작성해보면 아래와 같이 자동 완성된 코드를 볼 수 있다. Queue는 인터페이스로만 제공되어서 따로 구현체를 사용해야 한다. 인텔리제이를 사용할 때는 LinkdeList 를 추천해준다. 나머진 목적에 맞게 사용하면 된다. add() 먼저 add()를 사용해서 큐에 하나씩 추가할 수 있다. public static void main(String[] args) { Queue queue = new LinkedList(); queue.add("일"); queue.add("이"); queue.add("삼"); queue...
-
[JAVA] Stream.concat을 이용한 2개의 int 배열 합치기programming/JAVA 2021. 2. 6. 18:09
두 개의 정수 배열을 더하기 위한 방법. int [] arr1과 int [] arr2를 더하기 위해선 여러 가지 방법이 있다. 1. int [] arr3을 arr1+arr2 사이즈로 정의해서 새로 만들고, arr1, arr2의 요소를 채워 넣어주는 방법. 2. arr1, arr2를 ArrayList로 바꾼 다음 하나씩 추가하고 다시 배열로 바꾸는 방법. 3. Stream으로 변환 후, Stream.concat을 이용해 더하고 배열로 바꾸는 방법. 등, 여러 가지 방법이 있지만, 여기서는 Stream을 이용한 방법을 정리한다. Stream을 이용한 두 개의 배열 더하기 1. 먼저 IntStream을 import 한다. import java.util.stream.IntStream; 2. 두 개의 배열을 In..