1 분 소요

서론

자바로 개발을 하다보면 기본 라이브러리에서 제공하는 메서드 등을 사용할 때가 자주 생긴다.
물론 간단한 정보는 구글링으로 충분히 해결할 수 있지만, 내가 필요로하는 구체적인 정보를 얻기엔 검색만으로는 한계가 있다.
그래서 구글링으로 대충 어느 클래스, 메서드를 써야하는지 찾고, 자바 공식문서에서 구체적인 사용법을 찾아 볼 필요가 있다.
그런데 초보자 입장에선 공식문서를 그냥 본다고 바로 이해할 수 있는게 아니며, 공식문서를 읽는 방법을 어느정도 배울 필요가 있다.

JAVA 공식문서에서 필요한 정보 찾아보기

숫자를 입력하면 콘솔창에 3자리마다 콤마(,)를 찍고, 숫자 앞에 KRW가 찍히도록 하는 간단한 프로그램을 만들어보자
(ex. 10000 입력 -> KRW 10,000 출력)
물론 3자리마다 콤마를 찍는 로직을 직접 구현할 수도 있겠지만, 복잡하고 비효율적이기 때문에 기본 라이브러리에 있는 함수를 쓰는 것이 더 효율적인 방법일 것이다.
일단, 어떤 클래스, 메서드를 써야 로직을 구현할 수 있는지 모르므로, 구글에서 적절한 검색어로 검색을 해본다.
(검색어 예시 : format number with commas java)

01
가장 상단에 나온 링크를 클릭해보니 아래와 같이 해보면 3자리마다 콤마를 찍을 수 있다고 한다.
하지만 #과 ,0은 무슨 역할을 하는건지 숫자 앞에 KRW는 어떻게 붙일 수 있는 것인지에 대해서까지는 알려주지 않는다.
02
자바공식문서 에 접속하여 일단 DecimalFormat class로 들어가본 후, 생성자부분과 format() method에 대해 좀 더 찾아보자

// 공식문서에서 찾아볼 코드
DecimalFormat formatter = new DecimalFormat("#,###.00");
System.out.println(formatter.format(amount));

03
공식문서의 좌측 하단 클래스 영역에서 DecimalFormat 클래스를 검색하여 들어간 다음,

04
생성자 (Constructor) 부분을 찾아봤다. 그 중 파라미터로 String 타입을 받는 두번째 생성자에 대해 자세히 살펴보자

05
패턴을 설정하라 나오는데, 구체적으로 설정할 수 있는 패턴에 대해선 스크롤을 맨 위로 올린 다음, 다시 천천히 내리다보면 나온다.

06
천천히 읽어보니 “###,###,###,###” 이런 식으로 적으면 3자리 마다 콤마를 찍을 수 있으며, “#,###”라고 해도 숫자의 크기와 상관없이 같은 결과를 출력할 수 있다고 한다 (밑줄 참고)

07
format() 메서드에 대해서 찾아보니 3개의 파라미터를 가지고 있다는걸 알 수 있었다
long number : formatting 할 숫자
StringBuffer result : 붙이고 싶은 텍스트
FieldPosition fieldPosition : 이것은 무엇인지 아직 잘 모르겠다. 그래서 FiledPosition 클래스를 더 찾아보았다.
08
생성자 부분을 찾아보았는데, 그래도 여전히 이것이 어떤 기능을 할지는 감이 잡히지 않았다.
그래서 See Also: 에 있는
NumberFormat.INTEGER_FIELD, NumberFormat.FRACTION_FIELD, DateFormat.YEAR_FIELD, DateFormat.MONTH_FIELD를 하나씩 다 넣어서 객체를 생성해봤는데, 결과에 영향을 끼치진 않았다. FieldPosition 파라미터가 무슨 역할을 하는지에 대해선 공식문서에서 주는 정보만으로는 이해하기 어려웠지만, 아무튼 원하는 정보는 충분히 얻을 수 있었다.

// 최종코드
	public static void main(String[] args) {
		int num = 10000; // formatting할 숫자
		DecimalFormat formatter = new DecimalFormat("#,###"); // 3자리마다 콤마 찍기

		StringBuffer sb = new StringBuffer("KRW "); // 숫자 앞에 붙일 텍스트
		FieldPosition fp = new FieldPosition(NumberFormat.INTEGER_FIELD);
		System.out.println(formatter.format(num, sb, fp));
	}

  //출력결과
  KRW 10,000
첫 번째 글입니다 가장 최근 글입니다

댓글남기기