Formatter 클래스

printf-style 형식을 위한 번역기 객체
숫자, 문자열, 날짜 및 시간과 지역 특징적 출력 형식 제공
format() 멘 거들을 이용하여 문자열 표현

f.format("%5s",12);

Formatter 클래스의 주요 생성자

Formatter() : 새로운 Formatter 객체를 생성한다.

Formatter(File file) : 현재 인자로 전달된 File 객체인 file과 연결된 새로운 Formatter 객체가 생성된다. 후에 Formatter 객체에 정의된 포맷 형식으로 출력 내용을 file에 저장시킬 수 있다.

Formatter(File file, String csn) : 현재 인자로 전달된 File 객체인 fileString 객체의 csn이라는 문자 셋으로 적용된 새로운 Formatter 객체가 생성된다..

Formatter(OutputStream os) : 현재 인자로 전달된 OutputStream 객체인 os와 연결된 새로운 Formatter 객체가 생성된다. 후에 연결된 os라는 스트림을 통해 Formatter 객체 정의된 포맷형식으로 출력 내용을 보낼 수 있다.

Formatter(String fileName) : 현재 인자로 전달된 String 객체인 fileName은 파일 경로다. 해당 경로에 파일이 존재해야 하며 그 파일과 연결된 새로운 Formatter 객체가 생성된다.

Formatter의 기본 문법
1) 일반 문자,그리고 숫자 형들을 위해 포맷 규칙
%[argument_index$][flags][width][precision]conversion
2) 날짜/시간을 표현하도록 사용된 형들에 대한 포맷 규칙
%[argument_index$][flags][width]conversion
3) 인자들에 부합하지 않은 포맷 규칙
%[flags][width]conversion

▶문법 구성 설명
[argument_index$]:
인자 인덱스는 전달된 인자 목록에서 인자의 위치를 표시한 십진 수정 수다. 첫 번째 인자는 1$로 표현되며 두 번째 인자는 2$ 형식으로 표현한다.
[flags]:
표현하고자 하는 객체 Type에 따라 출력 형식을 바꿀 수 있는 문자 셋을 의미한다.
[width]:
출력 시사용 되는 글자들의 최저 수를 의미한다. (최소값)
[precision]:
출력 시사용 되는 글자들의 수를 제한하기 위한 것이며 이것은 곧 표현될 글자들의 최대수가 된다.
conversion:
전달된 인자가 어떻게 포맷되어야 하는지를 알리는 포맷 형식 문자 셋을 의미한다.

 

 

Formatter클래스 예제 : FormatterEx1.java

01 import java.util.*;
02 class FormatterEx1{
03
04	public static void main(String[] args){
05		Formatter f = new Formatter();  //Formatter 객체생성
06		f.format("%1$b, %3$h, %2$5s", false, 500, 'A');  //표현형식설정
07		System.out.println(f.toString());
08	}
09 } 

실행결과

false, 41, 500

 

 

[배열]

배열은 같은 자료 형들 끼지 모아두는 하나의 묶음이다.

자바에서 하나의 배열은 하나의 객체로 인식된다.

배열의 종류

 

배열의 단계적 작업

1차원 배열 예제 : ArrayEx1.java

01  class ArrayEx1{
02	public static void main(String[] args){
03		char[] ch; //배열 선언
04		ch = new char[4]; //배열 생성
05
06		//배열 초기화
07		ch[0] = 'J';
08		ch[1] = 'a';
09		ch[2] = 'v';
10		ch[3] = 'a';
11		
12		//배열 내용 출력
13		for(int i = 0 ; i < ch.length ; i++)
14			System.out.println("ch["+i+"]:"+ch[i]);
15	}
16  }

실행결과

ch[0] : J

ch[1] : a

ch[2] : v

ch[3] :a

 

 

● 객체형 배열

객체형 배열은 객체를 가리킬 수 있는 참조 값(주소)들의 묶음이다. 실제 값이 저장된 기본 자료 형과는 다르게 객체의 reference들의 집합인 것이다.

객체형 배열은 집집마다 우편함을 한 곳에 모아둔 것과 같다. 각 우편함들은 나름대로 특정한 가정이라는 객체(Object)의 주소를 대신하는 것을 의미하며 이들의 묶음(집합)이 곧 reference배열 또는 객체형 배열이라 한다.

 

객체형 배열 예제 : ObjArrayEx1.java

01 class ObjArrayEx1 {
02	public static void main(String[] args){
03		String[] arr;
04		arr = new String[3];
05
06		arr[0] = "Java ";
07		arr[1] = "Array ";
08		arr[2] = "Test";
09	}
10 }

 

● 다차원 배열

1차원 배열이 여러 개 모인 것을 다차원 배열이라 한다.

 

ObjArrayEx4.java

01 class ObjArrayEx4 {
02	public static void main(String[] args){
03		int[][] test; // 다차원 배열 선언
04		test = new int[2][3];
05		test[0][0] = 100;
06		test[0][1] = 200;
07		test[0][2] = 300;
08		//--------------- 1행 초기화 끝
09		test[1][0] = 500;
10		test[1][1] = 600;
11		test[1][2] = 700;
12		//--------------- 2행 초기화 끝
13	}
14 }

먼저 Varargs가 어떤 장점이 있는지 알아보자! JDK5.0이전 버전에서는 메서드 호출 시 인자의 수가 일치하지 않을 경우엔 호출이 불가능 했다. 이것을 해결하기 위해 오버로딩 또는 배열화 하여 호출이 가능하도록 했지만 작업에 불편함이 많았다. 이제부터는 호출되는 메서드의 자료 형이 하나로 통일 되고 인자의 수가 다르다는 이유로 오버로딩 또는 배열작업을 따로 하지 않아도 된다. 

 

VarEx1.java

01  class VarEx1{
02  
03  	public String format(String pattern, int... data) {
04        	StringBuffer sb = new StringBuffer();
05
06        	for (int i = 0, j = 0; i < pattern.length(); i++) {
07            char c = pattern.charAt(i);
08            if (c == '%') {
09            	sb.append(data[j]);
10            	j++;
11            } else 
12            sb.append(c);
13        	} //end for 
15        		return sb.toString();
16    	}
17
18    	public static void main(String[] args) {
19        		VarEx1 v1 = new VarEx1();
20		String msg = v1.format("입력된 값 %,%,%",
21			100, new Integer(5000), 10); 
22        		System.out.println(msg);
23
24		msg = v1.format("%이 %보다 많은건가?",
25			new Integer(36), new Integer(28));
26		System.out.println(msg);
27    	}
28  } 

실행결과

입력된 값 100,5000,10,

36이 28보다 많은건가?

 

 

[요약]

 Overloading(중복정의)이라는 것은 하나의 클래스 내에서 같은 이름을 가지는 메서드(멤버함수)가 여러 개 정의되는 것을 말한다.  

 

 생성자란? 것은 메모리상에 객체가 생성될 때 단 한번 호출되어 객체의 구조를 인식하게 하고 생성되는 객체의 멤버변수들을 초기화 하는데 목적을 둔 것이다.  

 this라는 것은 특정 객체 내에서 현재 객체 자신을 의미하는 reference변수이다. 그리고 this()는 현재 자신의 객체 생성자를 의미한다.  

 String객체 내에는 검색기능, 절삭기능, 추출기능 등의 여러 가지 기능의 메서드들이 제공되고 있지만 이들은 모두 String객체의 값을 직접 수정하는 작업을 하지 못한다. 이유는 String객체가 불변적(immutable)특징으로 편집이 불가능하기 때문이다.  

 Formatter클래스는 JDK5.0에서 printf-style의 출력 포맷방법을 제공해주는 새로운 클래스이다. 이는 문자열로 전달되는 포맷형식을 번역하는 하나의 번역기 역할을 하는 클래스인 것이다.  

 배열이란? 같은 자료 형들끼리 한 곳에 모아두는 묶음과 같은 하나의 객체이다. 그리고 배열을 이루는 각각의 변수를 요소(Element)라 한다. 배열의 특정 요소를 참조하려면 배열명[index값]형식으로 사용할 수 있다. 여기서 쓰이는 index값은 반드시 정수형이어야 한다.  

 

+ Recent posts