Presentation is loading. Please wait.

Presentation is loading. Please wait.

7장. 자바의 다양한 클래스.

Similar presentations


Presentation on theme: "7장. 자바의 다양한 클래스."— Presentation transcript:

1 7장. 자바의 다양한 클래스

2 학습목표 자바 클래스 라이브러리를 이해하고 다음 패키지와 클래스를 프로그래밍에 활용할 수 있다.
• 패키지 java.lang • 클래스 Object, Math, String, StringBuffer • 랩퍼 클래스 Byte, Short, Integer, Long, Float, Double, Boolean, Character 다음 패키지와 클래스를 프로그래밍에 활용할 수 있다. • 패키지 java.util • 클래스 Random, StringTokenizer • 클래스 Calendar, GregorianCalendar, Date 자바 콜렉션 프레임워크를 이해하고 다음 클래스와 인터페이스를 프로그래밍에 활용할 수 있다. • 인터페이스 Collection, List, Queue, Set, Map • 클래스 LinkedList, Vector, HashSet, HashMap

3 1. 패키지 JAVA.LANG의 클래스

4 자바 API 자바 클래스 라이브러리(java class library) 자바 API 문서
Section 1 패키지 java.lang의 클래스 p256 자바 API 자바 클래스 라이브러리(java class library) 자바 언어를 활용하기 위해 이미 만들어 놓은 다양한 자바 클래스 자바 API 문서

5 주요 패키지 명명규칙 패키지에서 주의할 점 패키지 java. 패키지 javax. 패키지 org. 패키지 com.
Section 1 패키지 java.lang의 클래스 주요 패키지 명명규칙 패키지 java. 초기에 패키지 패키지 javax. 이후 추가된 패키지 패키지 org. 외부 표준 조직 에서 만든 패키지 패키지 com. 외부 회사에서 만든 패키지 패키지에서 주의할 점 패키지는 하부 패키지를 포함하지 않음

6 기본 패키지 java.lang 패키지 java.lang 자바 프로그램을 위한 기본 클래스가 소속된 패키지 주요 클래스
Section 1 패키지 java.lang의 클래스 기본 패키지 java.lang 패키지 java.lang 자바 프로그램을 위한 기본 클래스가 소속된 패키지 주요 클래스 Object, Integer, String, StringBuffer, Math 등 유일하게 import 문장이 필요 없이 사용 가능

7 최상위 클래스 Object 자동으로 최상위 클래스 Object 주요 메소드
Section 1 패키지 java.lang의 클래스 최상위 클래스 Object 자동으로 최상위 클래스 Object 새로운 클래스를 정의하는 경우 상속 관계를 명시하지 않으면 자동으로 클래스 Object가 상위 클래스 주요 메소드 메소드 toString() 객체의 문자열 표현 값을 반환 하위 클래스에서 달리 재정의(overriding)하지 않으면 문자열로 표현 메소드 equals() 객체 내용의 동등 여부를 검사하는데 사용

8 Section 1 패키지 java.lang의 클래스
수학 관련 클래스 Math 정적 메소드와 상수 제공

9 Section 1 패키지 java.lang의 클래스
클래스 Object와 Math의 사용 실습예제 7-1

10 랩퍼 클래스의 개념과 종류 8개의 랩퍼 클래스(wrapper class) 자바의 기본형을 참조형으로 표현한 클래스
Section 1 패키지 java.lang의 클래스 랩퍼 클래스의 개념과 종류 8개의 랩퍼 클래스(wrapper class) 자바의 기본형을 참조형으로 표현한 클래스 기본형을 참조형으로 포장한 포장 클래스

11 클래스 Integer Integer 객체의 생성 정수 또는 정수 형태의 문자열 인자로 생성
Section 1 패키지 java.lang의 클래스 클래스 Integer Integer 객체의 생성 정수 또는 정수 형태의 문자열 인자로 생성 Integer age = new Integer(20); Integer snum = new Integer(" "); 저장된 int 값은 한 번 생성되면 수정할 수 없음 int 값은 메소드 intValue()로 반환

12 박싱과 언박싱 Jdk 1.5 이전 Jdk 1.5 이후 클래스 Double을 사용하여 실수 2.59를 저장하는 객체를 생성
Section 1 패키지 java.lang의 클래스 박싱과 언박싱 Jdk 1.5 이전 클래스 Double을 사용하여 실수 2.59를 저장하는 객체를 생성 Double radius = new Double(2.59); 기본형 double 변수 r에 저장하는 문장 double r = radius.doubleValue(); Jdk 1.5 이후 자동 박싱(boxing) 기본형에서 랩퍼 객체의 자동 변환 Double radius = 2.59; //boxing 자동 언박싱(unboxing) 랩퍼 객체에서 기본형의 변환 double r = radius; //unboxing

13 Section 1 패키지 java.lang의 클래스
클래스 Character 실습예제 7-4

14 클래스 String(1) 일련의 문자 표현인 문자열 클래스 String으로 표현 한번 생성되면 다시 수정될 수 없는 특징
Section 1 패키지 java.lang의 클래스 클래스 String(1) 일련의 문자 표현인 문자열 클래스 String으로 표현 한번 생성되면 다시 수정될 수 없는 특징

15 Section 1 패키지 java.lang의 클래스
클래스 String(2) 다양한 메소드 제공 현재 객체의 문자열에서 새로운 문자열을 생성하여 반환하는 메소드로서 자신의 문자열은 수정되지 않음

16 Section 1 패키지 java.lang의 클래스
클래스 String(3) 실습예제 7-5

17 클래스 StringBuffer(1) 생성된 이후에도 문자열의 내용을 계속 수정 가능
Section 1 패키지 java.lang의 클래스 클래스 StringBuffer(1) 생성된 이후에도 문자열의 내용을 계속 수정 가능 문자열을 저장할 수 있는 용량(capacity)을 가짐 용량이 작으면 자동으로 수정되므로 프로그래머는 크게 신경 쓸 필요 없음 StringBuffer를 생성하는 방법 StringBuffer sb1 = new StringBuffer(); //용량은 16 StringBuffer sb2 = new StringBuffer(32); //용량은 32 StringBuffer sb3 = new StringBuffer("java");

18 클래스 StringBuffer(2) 주요 메소드
Section 1 패키지 java.lang의 클래스 클래스 StringBuffer(2) 주요 메소드 현재 객체의 문자열이 연산이 수행된 내용으로 수정되며, 반환 값은 수정된 문자열을 StringBuffer 형으로 반환

19 Section 1 패키지 java.lang의 클래스
클래스 StringBuffer(3) 실습예제 7-6

20 2. 패키지 java.util의 클래스

21 패키지 java.util 다양한 유틸리티 클래스 프로그램에서 이용할 수 있는 각종 유틸리티가 제공되는 패키지
Section 2 패키지 java.util의 클래스 p268 패키지 java.util 다양한 유틸리티 클래스 프로그램에서 이용할 수 있는 각종 유틸리티가 제공되는 패키지 Calendar, GregorianCalendar, Date 주요 클래스로는 날짜와 시간정보를 표현 Random 난수(random number)를 생성 Vector, Stack 다양한 자료형의 객체를 배열의 원소로 이용할 수 있는 자료구조를 지원 자료 구조에서 가장 많이 이용하는 구조 중의 하나인 스택 구조를 지원 Collection, Set, List, Queue, Map 등의 다양한 인터페이스와 클래스 여러 항목의 원소를 가변적으로 삽입과 삭제가 편리

22 클래스 Random int, long, float, double 등의 다양한 형의 난수를 만들어 제공 기본 생성자
Section 2 패키지 java.util의 클래스 클래스 Random int, long, float, double 등의 다양한 형의 난수를 만들어 제공 기본 생성자 현재 시간 정보로 시드(seed) 값을 지정하여 난수를 생성 long 형 인자의 생성자는 시드 값을 직접 지정하여 난수를 생성 Random rnd1 = new Random(); Random rnd2 = new Random(45);

23 Section 2 패키지 java.util의 클래스
다양한 난수의 발생 실습예제 7-7

24 클래스 StringTokenizer(1)
Section 2 패키지 java.util의 클래스 클래스 StringTokenizer(1) 하나의 문자열에서 여러 토큰(token)을 생성 지정된 분리자(delimiters)를 사용 기본 분리자는 " \t\n\r\f"으로 공백문자와 탭 \t과 같은 4개의 제어문자 다른 분리자를 지정하고 싶다면 StringTokenizer의 생성자에서 2번째 인자에 기술 기본적으로 분리자를 토큰에 속하지 않게 분리 분리자를 토큰에 포함시키려면 StringTokenizer의 생성자에서 3번째 인자를 true로 지정 String str = "public static void main(String[] args) {"; StringTokenizer st1 = new StringTokenizer(str); StringTokenizer st2 = new StringTokenizer(str, " ()"); StringTokenizer st3 = new StringTokenizer(str, " ()[]{"); StringTokenizer st4 = new StringTokenizer(str, "()[]{", true);

25 클래스 StringTokenizer(2)
Section 2 패키지 java.util의 클래스 클래스 StringTokenizer(2) 다음은 StringTokenizer의 메소드 반복문을 사용하여 여러 토큰을 분리자로 분리하여 토큰을 추출하는데 유용하게 사용

26 Section 2 패키지 java.util의 클래스
실습예제 7-8

27 클래스 Date 시간 정보를 표현하는 기본 클래스 클래스 DateFormat 클래스 Locale
Section 2 패키지 java.util의 클래스 클래스 Date 시간 정보를 표현하는 기본 클래스 클래스 Date의 많은 메소드는 더 이상 사용을 권장하지 않음 deprecated 메소드 클래스 Date는 Calendar와 밀접한 관련이 있는 클래스 시간 정보를 초 정보로 저장하는데, 1/1000초인 millisecond로 표현 메소드 getTime() 1970년 1월 1일 00:00:00을 기준으로 지나간 시간을 millisecond로 반환 기준 시간인 월 1일 00:00:00을 epoch 클래스 DateFormat 패키지 java.text에 속하는 클래스로 시간 정보의 출력 형식에 제공 클래스 Locale 패키지 java.util에 있는 클래스로 국가 정보를 정의한 클래스 Date now = new Date(); System.out.println(now); System.out.println(now.getTime());

28 Section 2 패키지 java.util의 클래스
실습예제 7-9

29 클래스 Calendar 날짜와 시간에 관한 정보를 제공하는 추상 클래스 자체의 생성자를 이용하여 객체를 생성 불가능
Section 2 패키지 java.util의 클래스 클래스 Calendar 날짜와 시간에 관한 정보를 제공하는 추상 클래스 자체의 생성자를 이용하여 객체를 생성 불가능 정적 메소드 getInstance() 현재 시간 정보를 갖는 객체를 생성해주는 메소드 getTime() 반환형은 Date로서, 바로 출력하면 영문 표현의 시간 정보를 출력 가능 Calendar now = Calendar.getInstance(); System.out.println(now.getTime());

30 클래스 Calendar 실습예제 7-10 Section 2 패키지 java.util의 클래스
import java.util.Calendar; public class CalendarTest { public static void main(String[] args) { Calendar now = Calendar.getInstance(); System.out.println(now.getTime()); int year = now.get(Calendar.YEAR); int month = now.get(Calendar.MONTH) + 1; //월 시작이 0 int date = now.get(Calendar.DATE); int hour = now.get(Calendar.HOUR_OF_DAY); int minute = now.get(Calendar.MINUTE); int second = now.get(Calendar.SECOND); System.out.println(year + "년 " + month + "월 " + date + "일"); System.out.println(hour + "시 " + minute + "분 " + second + "초"); }

31 3. 컬렉션 프레임워크

32 컬렉션 프레임워크 개요 인터페이스 계층 컬렉션 프레임워크collection framework
Section 3 컬렉션 프레임워크 p276 컬렉션 프레임워크 개요 인터페이스 계층 컬렉션 프레임워크collection framework 여러 객체 원소의 삽입과 삭제가 편리한 자료 구조를 지원하는 인터페이스 인터페이스 Collection, Set, List, Queue, Map 이를 구현한 여러 클래스로 컬렉션 프레임워크를 구성

33 Collection 크게 인터페이스 Collection과 Map으로 구분 인터페이스 Collection 인터페이스 Map
Section 3 컬렉션 프레임워크 Collection 크게 인터페이스 Collection과 Map으로 구분 인터페이스 Collection 인터페이스 Set과 List 그리고 Queue로 분류 인터페이스 Set은 수학의 집합을 표현한 인터페이스로 원소 중복을 허용하지 않음 인터페이스 List와 Queue는 원소의 중복을 허용하고 순서도 의미가 있음 객체 하나를 컬렉션의 원소로 처리 인터페이스 Map 키(key)와 값(value)의 쌍으로 구성된 자료 구조를 컬렉션의 원소로 처리 원소의 중복을 허용하지 않음

34 다양한 컬렉션 클래스 자바의 컬렉션 인터페이스를 구현한 클래스는 매우 다양 관련 클래스 이름
Section 3 컬렉션 프레임워크 다양한 컬렉션 클래스 자바의 컬렉션 인터페이스를 구현한 클래스는 매우 다양 관련 클래스 이름 HashMap과 같이 [내부구현방법][인터페이스이름]으로 구성 HashMap인 클래스는 Hash는 구현 방법이고 Map은 인터페이스 이름

35 Collection 인터페이스 자바 컬렉션 프레임워크를 대표하는 인터페이스 Collection 원소의 추가, 삭제 등의 연산
Section 3 컬렉션 프레임워크 Collection 인터페이스 자바 컬렉션 프레임워크를 대표하는 인터페이스 Collection 원소의 추가, 삭제 등의 연산 List, Set, Queue가 가져야 할 기본적인 연산을 추상 메소드로 선언

36 Iterator 인터페이스 컬렉션을 구성하는 원소 집합을 순차적으로 처리하기 위한 인터페이스 iterator() 메소드
Section 3 컬렉션 프레임워크 Iterator 인터페이스 컬렉션을 구성하는 원소 집합을 순차적으로 처리하기 위한 인터페이스 iterator() 메소드 인터페이스 Iterator의 객체를 반환 인터페이스 Collection을 구현하는 컬렉션 클래스 객체인 참조 변수 c에서 메소드 iterator()를 호출하여 인터페이스 Iterator의 객체를 얻음 메소드 hasNext()와 next()를 사용 반복 Iterator it = c.iterator(); while ( it.hasNext() ) { System.out.println(it.next()); }

37 List 인터페이스 순차적으로 나열된 원소를 처리하는 구조 첨자를 인자로 하는 메소드를 제공
Section 3 컬렉션 프레임워크 List 인터페이스 순차적으로 나열된 원소를 처리하는 구조 첨자를 인자로 하는 메소드를 제공 인터페이스 List를 상속받아 구현한 대표적인 클래스 LinkedList, ArrayList, Vector, Stack 등

38 ListIterator 인터페이스 상위로 Iterator를 상속받는 인터페이스
Section 3 컬렉션 프레임워크 ListIterator 인터페이스 상위로 Iterator를 상속받는 인터페이스 컬렉션을 구성하는 원소 집합에서 순방향과 역방향으로 순차적 처리에 편리

39 양방향의 연결 리스트인 클래스 LinkedList
Section 3 컬렉션 프레임워크 양방향의 연결 리스트인 클래스 LinkedList 인터페이스 List와 Queue 등을 구현한 클래스 내부적으로 양방향의 연결 리스트로 구성 처음부터 순방향으로 또는 마지막부터 역방향으로 순회 가능 null을 포함한 모든 종류의 객체를 처리 addFirst() : 맨 앞에 add()와 addLsat() : 가장 끝에 add(index) 지정된 첨자 위치 등 자유자재로 삽입 가능

40 Section 3 컬렉션 프레임워크 클래스 LinkedList 주요 메소드

41 Section 3 컬렉션 프레임워크 실습예제 7-12

42 클래스 Vector(1) 모든 종류의 객체를 저장할 수 있는 배열 구조
Section 3 컬렉션 프레임워크 클래스 Vector(1) 모든 종류의 객체를 저장할 수 있는 배열 구조 용량 capacity으로 저장할 수 있는 객체의 개수를 정함 용량이 모두 객체 원소로 모두 채워지면 자동으로 용량이 2배로 증가 Vector<Object> 벡터의 원소를 Object로 사용한다는 의미 Vector<Object> data = new Vector<Object>(); data.addElement(2012); data.add("년도");

43 Section 3 컬렉션 프레임워크 클래스 Vector(2) 주요 메소드

44 실습예제 7-13 Section 3 컬렉션 프레임워크 import java.util.Vector;
public class VectorTest { public static void main(String[] args) { Vector<Object> data = new Vector<Object>(3); //Vector data = new Vector(3); //경고 발생 data.addElement(2012); data.add("년도"); data.addElement(4.35); data.add(2, "목표 학점"); data.insertElementAt("자바 강좌", 0); System.out.println("size = " + data.size()); System.out.println("capacity = " + data.capacity()); System.out.println(data.toString()); }

45 Set 인터페이스 중복을 허용하지 않는 컬렉션 Collection에서 상속받아 재정의한 메소드로 구성
Section 3 컬렉션 프레임워크 Set 인터페이스 중복을 허용하지 않는 컬렉션 Collection에서 상속받아 재정의한 메소드로 구성 인터페이스 Set을 구현한 클래스 클래스 TreeSet Set에서 정렬을 지원하는 SortedSet 인터페이스를 상속받고 내부적으로 트리를 이용하여 Set을 지원 클래스 HashSet 내부적으로 원소를 해시 테이블(hash table)을 이용하여 저장하는 구조 Set은 인터페이스 Collection이 상위이므로 Collection의 모든 메소드를 상속

46 실습 예제 7-14: HashSet의 활용 Set은 집합이므로 7을 여러 번 삽입해도 중복을 허용하지 않고 하나만 삽입
Section 3 컬렉션 프레임워크 실습 예제 7-14: HashSet의 활용 Set은 집합이므로 7을 여러 번 삽입해도 중복을 허용하지 않고 하나만 삽입 객체 HashSet의 내부 원소로 Integer만 지원한다면 자료형 HashSet<Integer>를 사용 public class void HashSetTest { HashSet<Integer> setA = new HashSet<Integer>(); HashSet<Integer> setB = new HashSet<Integer>(); setA.add(3); setA.add(5); setA.add(7); setA.add(8); setA.add(7); setA.add(9); System.out.print("A = "); print(setA); System.out.println(" A = " + setA); setB.add(5); setB.add(3); setB.add(2); System.out.print("B = "); print(setB); System.out.println(" B = " + setB); boolean isChanged = setA.removeAll(setB); System.out.print("A - B = "); if (isChanged) System.out.println(setA);; } public static void print(HashSet<Integer> s) { Iterator<Integer> i = s.iterator(); while ( i.hasNext() ) System.out.print(i.next()+ " ");

47 Map 인터페이스(1) 키(key)와 값(value)으로 원소를 처리 하위 클래스 메소드 put(key, value)으로 저장
Section 3 컬렉션 프레임워크 Map 인터페이스(1) 키(key)와 값(value)으로 원소를 처리 메소드 put(key, value)으로 저장 메소드 get(key)로 조회 하위 클래스 HashMap, TreeMap 등이 있으며 HashMap은 키와 값의 Map을 해시테이블을 사용하여 구현한 클래스

48 Section 3 컬렉션 프레임워크 Map 인터페이스(2) 주요 메소드

49 클래스 HashMap 인터페이스 Map을 상속받아 구현한 대표적 실습예제 7-15 키와 값으로 null 값을 모두 지원
Section 3 컬렉션 프레임워크 클래스 HashMap 인터페이스 Map을 상속받아 구현한 대표적 키와 값으로 null 값을 모두 지원 내부적으로 해시 테이블을 사용하여 구현 실습예제 7-15 import java.util.HashMap; import java.util.Iterator; public class HashMapTest { public static void main(String[] args) { HashMap<String, String> hm = new HashMap<String, String>();   hm.put("대한민국", "서울"); hm.put("일본", "동경"); hm.put("중국", "북경"); hm.put("태국", "방콕"); hm.remove("태국"); System.out.print("키 : " + hm.keySet()); System.out.println(" 값 : " + hm.values()); Iterator<String> keys = hm.keySet().iterator(); while ( keys.hasNext() ) { String key = keys.next(); String value = hm.get(key); System.out.println(key + ": " + value); }

50 4. 일반화 유형과 열거형

51 Generic의 사용 일반화 유형(generic type)
Section 4 일반화 유형과 열거형 p288 Generic의 사용 일반화 유형(generic type) 컬렉션을 사용할 때 내부 원소를 구성하는 객체의 자료형을 하나의 자료형으로 한정하고 싶을 때 클래스 HashMap<String, String>의 일반화 유형을 사용하면 Map의 키와 값으로 String만으로 제한 String으로의 자료형 변환이 필요없음 일반화 유형을 <Object, Object>로 이용 모든 종류의 객체를 키와 값으로 사용 가능

52 Generic 클래스 정의 일반화 유형을 지원하는 클래스 정의 방법
Section 4 일반화 유형과 열거형 Generic 클래스 정의 일반화 유형을 지원하는 클래스 정의 방법 클래스 MyContainer<E>는 원소로 일반화 유형을 지원하는 클래스로 정의 E는 MyContainer를 구성하는 원소(element)의 자료형을 의미 MyContainer<E>에서 원소로 문자열만 사용하려면 클래스 MyContainer<String>을 사용 객체 변수 pl은 pl.add(“algol”)과 같이 문자열만 삽입이 가능 모든 객체를 삽입하려면 MyContainer<Object>를 사용

53 실습예제 7-16 Section 4 일반화 유형과 열거형 package generics;
import java.util.ArrayList; public class MyContainer<E> { private ArrayList<E> list; public MyContainer() { list = new ArrayList<E>(); } public E get(int index) { return list.get(index); public void add(E element) { list.add(element); public static void main(String[] args) { MyContainer<String> pl = new MyContainer<String>(); pl.add("algol"); pl.add("C"); //pl.add(5); 오류 발생 pl.add("java"); System.out.println(pl.get(0) + " "); System.out.println(pl.get(1) + " "); System.out.println(pl.get(2) + " ");

54 Generic 메소드 구현 정적인 메소드 get() 실습예제 7-17
Section 4 일반화 유형과 열거형 Generic 메소드 구현 정적인 메소드 get() 인자인 일반화 유형 <T>의 배열에서 첨자에 해당하는 원소를 반환하는 메소드를 구현 매개변수의 일반화 유형은 static <T> T와 같이 지정자와 반환형 사이에 <T>으로 기술 첫 번째 인자인 ary는 일반화 유형인 T[] 배열임을 명시 실습예제 7-17 package generics; public class MyGenerics { public static <T> T get(T[] ary, int index) { return ary[index]; } public static <T> T getLast(T[] ary) { return ary[ary.length-1]; public static void main(String[] args) { Integer n[] = {3, 4, 5, 7}; System.out.println(MyGenerics.get(n, 2) + " " + MyGenerics.getLast(n)); String s[] = {"generics", "type casting", "input", "output"}; System.out.println(MyGenerics.get(s, 1) + " " + MyGenerics.getLast(s));

55 열거형 정의 열거 자료형(enumeration data type)
Section 4 일반화 유형과 열거형 열거형 정의 열거 자료형(enumeration data type) 참조형으로 제공, 키워드 enum과 자료형 클래스 이름 pl로 상수 c, cpp, java, csharp을 정의하는 문장 열거 유형은 정적 메소드 values()를 이용 열거 원소의 상수로 구성된 배열을 반환 상수 목록은 switch 문의 case에 그대로 사용 public class EnumTest { public enum pl {c, cpp, java, csharp}; public static void main(String[] args) { pl clang = pl.c; //정의한 열거 유형은 하나의 자료 유형으로 이용 System.out.println(clang); //저장된 상수 문자열이 출력 clang = pl.csharp; switch(clang) { case csharp: System.out.println(clang + ": C# 언어 "); } for (pl p : pl.values()) System.out.print(p + " "); System.out.println();

56 Thank You !


Download ppt "7장. 자바의 다양한 클래스."

Similar presentations


Ads by Google