2012년 8월 15일 수요일

CHAPTER 13 API에서 알아두어야 할 클래스들



일반 애플리케이션이라고 불리는 프로그램을 만든 경우는 드물다.
거의 실무에서는 웹이나 엔터프라이즈급의 솔루션을 만들 때 사용.
 
1. StringBuffer, StringBuilder
String 클래스와 거의 유사한 메소드들을 가지고 있고, 잦은 변경 시에도 속도도 훨씬 좋다.
   1) 문자열이 느린 원인? immutable
   2) 문자열 연산 시 문자열을 새로 만든다.
   3) 해결책 : StringBuffer / StringBuilder
      가. StringBuilder 주요 메소드
         append() : + 대신 사용
         reverse() : 역순으로 만들어서 반환
      나. 객체 안의 데이터를 내부적으로 변경, 새로운 객체를 만들지 않는다.
   4) StringBuffer, StringBuilder : 내용 변경 시 새로운 객체가 만들어지지 않고 같 은 
      객체가 계속해서 사용되는 형태
   5) String과 StringBuilder의 속도 차이는 엄청나다.
 
2. Date, Calendar, long : 시간을 데이터로 처리하기 위한 장치
   1) System.currentTimeMillis() : 운영체제의 시각을 long값으로 변환하여 알려줌.
   2) Calendar
      가. Calenar 객체 얻는 방법
         Calendar.getInstance();
         new GregorianCalendar();
      나. get()
      다. set() 메소드는 Calender 객체의 데이터를 변경할 때 사용한다.
         ex. cal2.set(Calendar.YEAR, 2010);
      라. 요일 : Calendar.DAY_OF_WEEK – 숫자로 표기
      마. 말일 : getActualMaximum(Calendar.DATE)
   3) Date는 Calendar와 long의 중간 고리
      Deprecated
      가. 생성자 : new Date(), new Date(long)
      나. Calendar에서 Date로, Date에서 long으로
         Calendar -> Date : getTimer();
         Calender -> long : getTimeMillis();
         Date -> Calendar : setTimer();
         long -> Calendar : setTimeMillis();
 
3. java.util.Random : 랜덤한 데이터
   Math.random() : double에 해당하는 임의의 실수를 발생
   Random 클래스 : seed 값을 지정, 추가 메소드
   1) Random 클래스의 생성자와 메소드
      가. new Random() : Seed값 지정하지 않는다.
      나. new Random(long seed) : Seed값 지정
   2) Random 클래스를 이용한 임의의 숫자 만들기
      가. 소수 : nextFloat(), nextDouble()
      나. 정수 : nextInt(), nextInt(int n), nextLong()
      다. newInt(10) : 0에서 9까지의 정수
 
4. java.util.Scanner : Scanner의 기능
   1) java.util.Scanner 클래스의 주요 생성자와 메소드
      가. Scanner(File file) : 지정된 파일에서 데이터를 읽는다.
      나. Scanner(InputStream in) : 입출력 프로그래밍
      다. Scanner(InputStream in, String encoding)
         - 입출력 프로그래밍, 지정된 문자열의 방식 적용
   2) Scanner로 파일을 읽을 수 있다.
      가. Scanner s = new Scanner(System.in);
      나. Scanner s = new Scanner(new File(“aaa.txt”));
   3) nextxxx()와 nextLine()의 차이
      13\n\r
   4) next()를 이용하면 띄어쓰기를 구분할 수 있다.
      가. next() : 공백 앞의 문자들을 끊어내서 문자열로 반환
      나. nextLint() : \n까지 데이터를 읽어들인 후 \n이전 문자를 반환
   5) Scanner는 JDK1.5 이상에서만 사용 가능
 
5. 정확한 소수 : BigDecimal
소수점 처리를 정수 스타일로 연산, 소수점 이하 몇 자리까지를 처리할 것인지 언급
BigDecimal bl = new BigDecimal(12345678);
BigDecimal result = bl.add(new BigDecimal(1.23), new MathContext(10));
- 숫자를 10개까지 정확하게 연산한다.
 
6. Wrapper 클래스 : 기본 자료형을 객체 자료형으로
   1) Wrapper 클래스는 기본 자료형을 객체 자료형으로
      Integer data = new Integer(3);
      int intValue = data.intValue();
      double doubleValue = data.doubleValue();
      float floatValue = data.floatValue();
      String stringValue = data.toString();
   2) Wrapper 클래스는 모두 immutable
      연산 후에는 새로운 녀석이 만들어진다.
   3) JDK1.5의 Autoboxing/Unboxing 기능
      가. Autoboxing : 자동으로 Wrapper 클래스로 변환
         int a = 10;
         Integer j = a;
      나. Unboxing : Wrapper 자료형을 기본 자료형으로 자동 변환
         Integer j = new Integer(10);
         int a = j;
 
7. 잠시 후에 실행하게 하는 Timer / TimerTask
   1) TimerTask 클래스 상속 : run() 메소드에 작업
   2) Timer에 schedule로 등록
      가. long : 밀리세컨드
      나. java.util.Date : 지정된 시간
 
8. 데이터를 마음대로 보여주는 Formatter
   1) System.out.printf()
      가. 정수 System.out.printf(“변수 a의 값은 %d\n”,a);
      나. 문자열 System.out.printf(“문자열은 %s\n”,str1);
      다. 소수 System.out.printf(“DOUBLE D %.3f\n”,d);
      라. 날짜 System.out.printf(“년/월/요일은 %ty %tm %ta\n”,cal,cal,cal);
   2) DecimalFormat과 SimpleDateFormat
      DecimalFormat df = new DecimalFormat(“#000.00#”);
      # : 없으면 출력하지 않는다
      0 : 없으면 무조건 0으로 출력
   3) Formatter 클래스
      formatter.format(“%.3f”, 123.45678);

댓글 없음:

댓글 쓰기