Java 6

jackson의 두 라이브러리, codehaus vs fasterxml

jackson 라이브러리를 사용할 때 자동 import를 하게 되면 codehaus를 쓸지, fasterxml을 쓸지 선택해야 하는 상황이 온다. 지금까지는 별 의문없이 fasterxml을 사용했었는데 두가지가 뭐가 다른건지 드디어 알아보았다. jackson은 1.x버전과 2.x 버전이 있는데 1.x버전이 org.codehaus.jackson이고 2.x버전이 com.fasterxml.jackson.core 이다. 현재는 jackson 2.x버전만 활발하게 개발이 진행되고 있다고 해서 각 repository에 들어가서 확인을 해 보았더니 codehaus jackson은 2016년 10월이 Latest commit이었고, fasterxml jackson은 Latest commit이 3 days ago(202..

Java 2022.03.14

Java.lang.StringBuilder

주어진 데이터를 String으로 변환하는 클래스. StringBuffer와 비슷한 역할을 하지만 동기화를 지원하지 않는다. 따라서 멀티스레드에서 사용될 때는 성능을 보장할 수 없다. StringBuffer에 비해 싱글스레드에서 속도가 더 빠르다는 특징이 있다. 기본적으로 16자의 제한 용량이 있다. 그렇지만 그 용량이 넘치더라도 자동으로 용량을 키워 준다. 주요 기능으로 append, insert가 있다. 둘 모두에서 character 배열은 2, 3번째 파라미터로 offset, length를, CharSequence는 start, end를 설정하여 substring을 따로 넘겨줄 수 있다. 생성자 StringBuilder() : 16개의 character를 담을 수 있는 빈 string builder ..

Java 2022.03.14

AutoBoxing과 AutoUnboxing

AutoBoxing primitive type으로 Wrapper Class를 선언해도 자동으로 Wrapper Class를 씌워 준다. 따라서 아래 두 줄은 같은 결과를 가져온다. Integer myInteger = 3; Integer myInteger = new Integer(3); AutoUnboxing Wrapper Class에서 Unboxing, 즉 내부의 값만 가져오는 절차를 거치지 않아도 자동으로 Unboxing을 해 준다. 아래 두 줄은 같은 결과를 가져온다. Integer myInteger = 3; System.out.println(myInteger); System.out.println(Integer.intValue(myInteger));

Java 2022.03.14

ArrayList와 LinkedList, 어떤 것을 사용해야 할까?

ArrayList 내부적으로 배열에 값을 저장하는 List이다. 선언할 때 int 값을 parameter로 전달하면 해당 int 값만큼의 크기로 배열이 초기화된다. default는 10이다. 배열 크기의 75%가 차면 현재 크기의 2배가 되는 배열을 생성하여 값을 복사한다. 따라서 많은 값이 들어올 것이 예상되면 그 크기만큼 초기값을 넣어주는 것이 효율적이다. 특정 위치의 값에 접근하는 일이 빈번하다면 ArrayList를 사용하는 것이 좋다. LinkedList 값이 얼마나 들어올지 예상되지 않을 때 사용하면 좋다.

Java 2022.03.14

Java에서의 여러가지 정렬(Sorting)

import java.util.*; Array Arrays.sort(array); // 오름차순 정렬 Arrays.sort(array, Collections.reverseOrder()); // 내림차순 정렬 - primitive type은 불가능 Arrays.sort(array, customComparator); // 커스텀 정렬 List Collections.sort(list); // 오름차순 정렬 list.sort(Collections.reverseOrder()); // 내림차순 정렬 list.sort(customComparator); // 커스텀 정렬 Comparator 첫번째 인자가 두번째 인자보다 작으면 음수: first first - second < 0 같으면 0: fir..

Java 2022.03.14

Java Custom Annotation (자바 커스텀 어노테이션 만들기)

자바에서 커스텀 어노테이션은 @interface로 선언하면 된다. 선언 시 필요한 범위에 따라 @Target, @Retention을 붙여줘야 한다. 아래와 같이 설정하면 실제로 많이 사용하는, 메소드에 붙여 동작을 제어할 수 있는 커스텀 어노테이션이 만들어진다. // @Target({ElementType.METHOD, ElementType.TYPE}) // 여러 타입을 넣을 경우 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface CustomAnnotation { String value(); } 이제 커스텀 어노테이션을 이루는 구성요소들에 대해 알아보자. @Target - 어노테이션을 적용할 위치를 지정하는 어..

Java 2021.07.09