본문 바로가기

IT 이야기/JAVA

9. 패키지와 주요 클래스


9.1 패키지 개요와 패키지의 사용

  자바에서는 클래스들을 분류하고 사용의 편리성을 제공하기 위해 관련된 클래스와 인터페이스들을 하나의 패키지로 묶을 수 있다.

java.lang : 기본적인 기능을 제공하는 패키지
java.util   : 유용한 유틸리티 클래스를 포함하는 패키지
java.io    : 입출력 기능을 제공하는 패키지로서 스트림을 다양한 형태로 처리할 수 있는 기능
java.net  : 네트워킹 과 관련된 기능을 제공하는 패키지

패키지 이름이 지정 방법은 실행 시간과는 상관이 없지만, 컴파일러에게 포함되는 클래스를 미리 알려준다는 면에서 완전한 이름을 지정하면 컴파일 시간의 효율성을 기할 수 있다.

9.2 java.lang 패키지의 개요

java.lang 패키지는 자바 프로그램에서 "import" 문을 사용하여 포함시키지 않아도 자동적으로 포함되는 패키지이다.

9.3 Object 클래스

java.lang.Object : Boolean,Charater,String,Number,Runtime,Thread,Throwable...

java.lang.Object 클래스는 모든 자바 프로그램의 최상위 클래스이다.
Object 클래스는 사용자가 명시적으로 extends 예약어를 사용하여 지정하지 않아도 무조건 상속된다.

boolean equals (Object object) : 두 객체가 같은 지를 비교하는 method
void finalize()                         : Garbage Collector 가 자동적으로 수집하기 전에 점유하고 있던 자원들을 해제 final Class getClass()                    : 객체의 클래스명을 Class 형의 객체로 반환
String toString()                      : 현재 객체의 문자열 표현을 반환한다
final void notify()                           : 대기 중인 스레드 중 하나의 스레드를 다시 시작
final void notifyAll()                        : 대기 중인 모든 스레드를 다시 시작시킨다.
final void wait()                             : 스레드의 실행을 중지하고 대기 상태로 간다.
9.4 Wrapper 클래스

자바의 자료형에는 primitive type 과 reference type 두가지로 구분할 수 있다.
둘중 primitive type 은 값으로 사용하는 방법과 객체로 사용하는 방법 두가지를 가지고 있다.
자바는 primitive type 객체를 지원하기 위해, 각각의 자료형과 관련된 클래스들을 제공하고 있으며, 이를 Wrapper 클래스라 한다.

Boolean, Character, Byte, Short, Integer, Long, Float, Double 클래스

Integer Class

  1 class IntegerExam1 {
  2     public static void main(String args[]) {
  3         Integer num1 = new Integer(13);
  4         Integer num2 = new Integer(25);
  5
  6         int hap = num1.intValue() + num2.intValue();
  7
  8         System.out.println("num1 이 포장하고 있는 정수는 : " + num1.intValue());
  9         System.out.println("num2 이 포장하고 있는 정수는 : " + num2.intValue());
 10         System.out.println("두수의 합 =  " + hap);
 11         }
 12 }


Character Class

  1 class CharacterExam1 {
  2     public static void main(String args[]) {
  3
  4         char a[] = { 'a','b',' ','?','C','5','A'};
  5
  6         for (int i=0 ; i<a.length ; i++) {
  7             System.out.println("a[" + i + "] 번째 요소 = " + a[i]);
  8
  9             if (Character.isDigit(a[i]))
 10                 System.out.println("  숫자입니다.");
 11             if (Character.isLetter(a[i]))
 12                 System.out.println("  문자입니다.");
 13             if (Character.isSpace(a[i]))
 14                 System.out.println("  공백입니다.");
 15             if (Character.isUpperCase(a[i]))
 16                 System.out.println("  대문자.");
 17             if (Character.isLowerCase(a[i]))
 18                 System.out.println("  소문자.");
 19
 20         }
 21
 22     }
 23 }


9.5 문자열의 개요

대부분의 프로그래밍 언어에서는 문자열을 null 로 끝나는 문자배열로 구현한다.
자바 에서는 String 과 StringBuffer 클래스를 제공하여 문자열을 처리한다.

즉 상수 문자열을 사용할 때는 String 클래스를 이용하고, 프로그램에서 계속 변하는 문자열을 사용할 때는 StringBuffer 클래스를 이용하여야 한다.
이렇게 문자열을 변하는 문자열과 변하지 않는 문자열로 나누는 이유는 효율성 때문이다. 변하지 않는 문자열은 그 문자열이 사용될 때마다 문자열의 길이를 다시 계산할 필요가 없어 고정 길이를 가지는 상수 문자열로 취급할 수 있다.
이러한 문자열은 변하는 문자열에 비해 실행시간의 효율성이 뛰어난 장점을 가지고 있다.

9.6 String 클래스

String name ="kim" ;
name ="park";

9.7 StringBuffer 클래스

String 클래스가 변하지 않는 문자열을 가지는 반면, StringBuffer 클래스는 변할 수 있는 문자열을 가진다.
StringBuffer 클래스는 묵시적으로 16개의 문자를 저장할 수 있는 객체를 생성한다.
객체의 크기를 필요에 따라 변경할 수 있다. 하지만 객체의 크기가 변할때마다 객체에게 할당된 메모리를 재할당 하는 일은 실행시간의 효율성이 저하되는 요인이다.

append()
capacity() - 문자열 버퍼의 크기를 반환
charAt()
delete()
insert()
length() - 문자열 버퍼에 있는 문자의 개수를 반환
reverse()
setLength()
toString()


9.8 유틸리티 패키지 개요

날짜, 시간, 난수, 자료구조 ...

9.9 Random 클래스

import java.util.*;
Random rand = new Random();
int num = rand.nextInt();

9.10 Arrays 클래스

자바에서 배열은 객체로 취급하며, 사용하는 모든 배열은 Arrays 클래스의 객체이다.

static int binarySearch (int[] a, int key);
static boolean equals (int[] a, int[] b);
static void fill(int [] a, int value);
static void sort(int [] a);
static void sort(int [] a, int from, int to);




'IT 이야기 > JAVA' 카테고리의 다른 글

자바 환경변수 설정하기  (0) 2011.04.11
Eclipse 한글판 -> 영문판 으로 실행하기  (0) 2011.03.15
8. 다중스레드  (0) 2010.11.11
7. 예외처리  (0) 2010.11.10
6. 인터페이스  (0) 2010.11.08