Presentation is loading. Please wait.

Presentation is loading. Please wait.

11장. 기본 API 클래스.

Similar presentations


Presentation on theme: "11장. 기본 API 클래스."— Presentation transcript:

1 11장. 기본 API 클래스

2 1절. 자바 API 도큐먼트 2절. java.lang과 java.util 패키지 3절. Object 클래스 4절. Objects 클래스 5절. System 클래스 6절. Class 클래스 7절. String 클래스 8절. StringTokenizer 클래스

3 9절. StringBuffer, StringBuilder 클래스
10절. 정규 표현식과 Pattern 클래스 11절. Arrays 클래스 12절. 포장(Wrapper) 클래스 13절. Math, Random 클래스 14절. Date, Calendar 클래스 15절. Format 클래스 16절. java.time 패키지

4 1절. 자바 API 도큐먼트 자바 API란? API 도큐먼트 (p.454~456)
자바에서 기본적으로 제공하는 라이브러리(library) 프로그램 개발에 자주 사용되는 클래스 및 인터페이스 모음 API 도큐먼트 (p.454~456) 쉽게 API 찾아 이용할 수 있도록 문서화한 것 HTML 페이지로 작성되어 있어 웹 브라우저로 바로 볼 수 있음

5 2절. java.lang과 java.util 패키지
자바 프로그램의 기본적인 클래스를 담은 패키지 포함된 클래스와 인터페이스는 import 없이 사용 주요 클래스

6 3절. Object 클래스 자바의 최상위 부모 클래스
자바의 최상위 부모 클래스 다른 클래스 상속하지 않으면 java.lang.Object 클래스 상속 암시 Object의 메소드는 모든 클래스에서 사용 가능

7 3절. Object 클래스 객체 비교(equals() 메소드) 기본적으로 == 연산자와 동일한 결과 리턴 (번지 비교)
논리적 동등 위해 오버라이딩 필요 논리적 동등이란? 같은 객체이건 다른 객체이건 상관없이 객체 저장 데이터 동일 Object의 equals() 메소드 재정의하여 논리적 동등 비교할 때 이용

8 3절. Object 클래스 객체 해시코드(hashCode()) (p.461~463) 객체 해시코드란?
객체 식별할 하나의 정수값 객체의 메모리 번지 이용해 해시코드 만들어 리턴 개별 객체는 해시코드가 모두 다름 논리적 동등 비교 시 hashCode() 오버라이딩의 필요성 컬렉션 프레임워크의 HashSet, HashMap, Hashtable 과 같은 클래스 는 두 객체가 동등한 객체인지 판단할 때 아래와 같은 과정을 거침

9 3절. Object 클래스 객체 문자정보(toString()) 객체를 문자열로 표현한 값
일반적으로 의미 있는 문자정보가 나오도록 재정의 Date 클래스- 현재 시스템의 날짜와 시간 정보 리턴 String 클래스 - 저장하고 있는 문자열 리턴 System.out.pritnln(Object) 메소드 Object의 toString()의 리턴값 출력

10 3절. Object 클래스 객체 복제(clone()) 원본 객체의 필드 값과 동일한 값을 가지는 새로운 객체 생성하는 것
복제 종류 얕은 복제(thin clone): 필드 값만 복제 (참조 타입 필드는 번지 공유) 깊은 복제(deep clone): 참조하고 있는 객체도 복제 Object의 clone() 메소드 동일한 필드 값 을 가진 얕은 복제된 객체 리턴 java.lang.Cloneable 인터페이스 구현한 객체만 복제 가능 깊은 복제 - clone() 메소드 재정의하고 참조 객체도 복제해야

11 3절. Object 클래스 객체 소멸자(finalize())
GC는 객체를 소멸하기 직전 객체 소멸자(finalize()) 실행 Object의 finalize() 는 기본적으로 실행 내용이 없음 객체가 소멸되기 전에 실행할 코드가 있다면? Object의 finalize() 재정의 될 수 있으면 소멸자는 사용하지 말 것 GC는 메모리의 모든 쓰레기 객체를 소멸하지 않음 GC의 구동 시점이 일정하지 않음

12 4절. Objects 클래스 Objects 클래스 Object의 유틸리티 클래스

13 4절. Objects 클래스 객체 비교 (Objects.compare(T a, T b, Comparator<T> c)) a, b 두 객체를 비교자(c)로 비교해 int값 리턴 Comparator<T> 인터페이스 제너릭 인터페이스 타입 T 타입의 객체를 비교하는 compare(T a, T b) 메소드 가짐 비교 예제 p.474~476

14 4절. Objects 클래스 동등 비교(equals()와 deepEquals()) 두 객체의 동등 비교
Objects.equals(Object a, Object b) deepEquals(Object a, Object b) 비교할 객체가 배열일 경우 항목 값까지도 비교

15 4절. Objects 클래스 해시코드 생성(hash(), hashCode())
Objects.hash(Object… values) 매개값으로 주어진 값들 이용해 해시 코드 생성하는 역할 Arrays.hashCode(Object[]) 호출해 해시코드 얻어 리턴 클래스의 hashCode()의 리턴값 생성할 때 유용하게 사용 Objects.hashCode(Object o) o.hashCode() 호출하고 받은 값 리턴 매개값이 null 이면 0 리턴

16 4절. Objects 클래스 널 여부 조사(isNull(), nonNull(), requireNonNull())
Objects.isNull(Object obj) obj가 null일 경우 true Objects.nonNull(Object obj) obj가 not null일 경우 true requireNonNull()

17 4절. Objects 클래스 객체 문자정보(toString()) 객체의 문자정보 리턴
첫 번째 매개값이 not null - toString ( )으로 얻은 값을 리턴 null이면 “null” 또는 두 번째 매개값인 nullDefault 리턴

18 5절. System 클래스 System 클래스 용도 프로그램 종료(exit()) 운영체제의 기능 일부 이용 가능
프로그램 종료, 키보드로부터 입력, 모니터 출력, 메모리 정리, 현재 시간 읽기 시스템 프로퍼티 읽기, 환경 변수 읽기 프로그램 종료(exit()) 기능 - 강제적으로 JVM 종료 int 매개값을 지정하도록 - 종료 상태 값 정상 종료일 경우 0, 비정상 종료일 경우 0 이외 다른 값 어떤 값 주더라도 종료 만약 특정 상태 값이 입력되었을 경우에만 종료하고 싶다면? 자바의 보안 관리자 설정

19 5절. System 클래스 쓰레기 수집기 실행 요청(gc()) (p.482~484)

20 5절. System 클래스 현재 시각 읽기 현재 시간을 읽어 밀리 세컨드(currentTimeMillis() -> 1/1000초) 와 나노세컨드(nanoTime()->1/109초) 단위의 long값 리턴 주로 프로그램 실행 소요 시간 구할 때 이용

21 5절. System 클래스 시스템 프로퍼티 읽기(getProperty()) 시스템 프로퍼티란? 대표적인 키와 값
JVM이 시작할 때 자동 설정되는 시스템의 속성값 대표적인 키와 값 시스템 프로퍼티 읽어오는 법

22 5절. System 클래스 환경 변수 읽기(getenv()) 운영체제가 제공하는 환경 변수 값 (문자열) 을 읽음

23 6절. Class 클래스 Class 클래스 Class 객체 얻기(getClass(), forName())
클래스와 인터페이스의 메타 데이터 관리 메타데이터: 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보 Class 객체 얻기(getClass(), forName()) 객체로부터 얻는 방법 문자열로부터 얻는 방법 리플렉션 (p.491~493) 클래스의 생성자, 필드, 메소드 정보를 알아내는 것

24 6절. Class 클래스 동적 객체 생성(newInstance()) (p.493~496)
실행 도중 클래스 이름이 결정될 경우 동적 객체 생성 가능

25 7절. String 클래스 생성자 byte[] 배열을 문자열로 변환하는 생성자 키보드로부터 읽은 바이트 배열을 문자열로 변환
파일의 내용을 읽거나, 네트워크를 통해 받은 데이터는 보통 byte[] 배열이므로 이것을 문자열로 변환하기 위해 사용

26 7절. String 클래스 String 메소드 문자열의 추출, 비교, 찾기, 분리, 변환등과 같은 다양한 메소드 가짐
사용 빈도 높은 메소드

27 7절. String 클래스 문자 추출(charAt()) 문자열 비교(equals()) 매개 값으로 주어진 인덱스의 문자 리턴
문자열 비교할 때 == 연산자 사용하면 원하지 않는 결과 발생!

28 7절. String 클래스 바이트 배열로 변환(getBytes()) 시스템의 기본 문자셋으로 인코딩된 바이트 배열 얻기
특정 문자셋으로 인코딩 된 바이트 배열 얻기 [참고] 디코딩

29 7절. String 클래스 문자열 찾기(indexOf()) 문자열 길이(length()) – 공백도 문자에 포함
매개값으로 주어진 문자열이 시작되는 인덱스 리턴 주어진 문자열이 포함되어 있지 않으면 -1 리턴 특정 문자열이 포함되어 있는지 여부 따라 실행 코드 달리할 때 사용 문자열 길이(length()) – 공백도 문자에 포함

30 7절. String 클래스 문자열 대치(replace()) 첫 번째 매개값인 문자열 찾음 두 번째 매개값인 문자열로 대치
새로운 문자열 리턴

31 7절. String 클래스 문자열 잘라내기(substring())
substring(int beginIndex, int endIndex) 주어진 시작과 끝 인덱스 사이의 문자열 추출 substring(int beginIndex) 주어진 인덱스 이후부터 끝까지 문자열 추출

32 7절. String 클래스 알파벳 소∙대문자 변경 (toLowerCase(), toUpperCase())

33 7절. String 클래스 문자열 앞뒤 공백 잘라내기(trim())

34 7절. String 클래스 문자열 변환(valueOf()) 기본 타입의 값을 문자열로 변환

35 8절. StringTokenizer 클래스 문자열 분리 방법 String의 split()
java.util.StringTokenizer 클래스 이용 String의 split() 정규표현식을 구분자로 해서 부분 문자열 분리 배열에 저장하고 리턴

36 8절. StringTokenizer 클래스 StringTokenizer 클래스

37 9절. StringBuffer, StringBuilder 클래스
문자열 결합 연산자 + String 은 내부의 문자열 수정 불가 -> 대치된 새로운 문자열 리턴

38 9절. StringBuffer, StringBuilder 클래스
StringBuffer, StringBuilder (p.514~516) 버퍼(buffer:데이터를 임시로 저장하는 메모리)에 문자열 저장 버퍼 내부에서 추가, 수정, 삭제 작업 가능 멀티 스레드환경: StringBuffer 사용 단일 스레드환경: StringBuilder 사용

39 10절. 정규 표현식과 Pattern 클래스 정규 표현식(Regular Expression) 작성 방법
문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용 Ex) 이메일, 전화번호, 비밀번호 등 문자 또는 숫자 기호와 반복 기호가 결합된 문자열

40 10절. 정규 표현식과 Pattern 클래스 Pattern 클래스 정규 표현식으로 문자열을 검증하는 역할
결과는 boolean 타입 !!!

41 11절. Arrays 클래스 Arrays 배열 조작 기능을 가지고 있는 클래스 - 배열 복사, 항목 정렬, 항목 검색
제공하는 정적 메소드

42 11절. Arrays 클래스 배열 복사 Arrays.copyOf(원본배열, 복사할 길이)
0 ~ (복사할 길이-1)까지 항목 복사 복사할 길이는 원본 배열의 길이보다 커도 되며 타겟 배열의 길이 copyOfRange(원본 배열, 시작 인덱스, 끝 인덱스) 시작인덱스 ~ (끝 인덱스-1)까지 항목 복사 System.arraycopy()

43 11절. Arrays 클래스 배열 항목 비교 배열 항목 정렬 배열 항목 검색
Arrays.equals(배열, 배열) - 1차 항목의 값만 비교 Arrays.deepEquals(배열, 배열) - 중첩된 배열의 항목까지 비교 배열 항목 정렬 Arrays.sort(배열)- 항목 오름차 순으로 정렬 기본 타입이거나 String 배열 자동 정렬 사용자 정의 클래스 배열은 Comparable 인터페이스를 구현해야만 정렬 배열 항목 검색 특정 값 위치한 인덱스 얻는 것 Arrays.sort(배열)로 먼저 정렬 Arrays.binarySearch(배열, 찾는 값) 메소드로 항목을 찾아야

44 12절. 포장(Wrapper) 클래스 포장(Wrapper) 객체란? 기본 타입의 값은 외부에서 변경 불가
기본 타입(byte, char, short, int, long, float, double, boolean) 값을 내부에 두고 포장하는 객체 기본 타입의 값은 외부에서 변경 불가

45 12절. 포장(Wrapper) 클래스 박싱(Boxing)과 언박싱(Unboxing)
박싱 하는 방법 생성자 이용 valueOf() 메소드 이용

46 12절. 포장(Wrapper) 클래스 언박싱 코드 각 포장 클래스마다 가지고 있는 클래스 호출 기본 타입명 + Value()

47 12절. 포장(Wrapper) 클래스 자동 박싱과 언박싱 자동 박싱 - 포장 클래스 타입에 기본값이 대입될 경우 발생
자동 언박싱 - 기본 타입에 포장 객체가 대입될 경우 발생

48 12절. 포장(Wrapper) 클래스 문자열을 기본 타입 값으로 변환 포장값 비교 parse + 기본타입 명  정적 메소드
포장 객체는 내부 값을 비교하기 위해 ==와 != 연산자 사용 불가 값을 언박싱해 비교하거나, equals() 메소드로 내부 값 비교할 것

49 13절. Math, Random 클래스 Math 클래스 (예제는 p.533~536 참고)
수학 계산에 사용할 수 있는 정적 메소드 제공

50 13절. Math, Random 클래스 Random 클래스 Random 클래스로 부터 Random객체 생성하는 방법
boolean, int, long, float, double 난수 입수 가능 난수를 만드는 알고리즘에 사용되는 종자값(seed) 설정 가능 종자값이 같으면 같은 난수 Random 클래스로 부터 Random객체 생성하는 방법 Random 클래스가 제공하는 메소드

51 14절. Date, Calendar 클래스 Date 클래스 날짜를 표현하는 클래스
날짜 정보를 객체간에 주고 받을 때 주로 사용

52 14절. Date, Calendar 클래스 Calendar 클래스 달력을 표현한 추상 클래스
OS에 설정된 시간대(TimeZone) 기준의 Calendar 객체 얻기 다른 시간대의 Calendar 객체 얻기 날짜 및 시간 정보 얻기

53 15절. Format 클래스 형식(Format) 클래스 숫자 형식 클래스(DecimalFormat)
숫자와 날짜를 원하는 형식의 문자열로 변환 종류 숫자 형식: DecimalFormat 날짜 형식: SimpleDateFormat 매개변수화 된 문자열 형식: MessageFormat 숫자 형식 클래스(DecimalFormat) 적용할 패턴 선택해 생성자 매개값으로 지정 후 객체 생성

54 15절. Format 클래스 날짜 형식 클래스(SimpleDateFormat)
매개변수화 된 문자열 형식 클래스(MessageFormat)

55 16절. java.time 패키지 java.time 패키지 자바8부터 추가된 패키지
날짜와 시간을 나타내는 여러 가지 API가 새롭게 추가됨 날짜와 시간을 조작하거나 비교하는 기능이 추가됨 Date와 Calendar는 날짜와 시간을 조작하거나 비교하는 기능이 불충분

56 16절. java.time 패키지 날짜와 시간 객체 생성 날짜와 시간을 표현하는 5개의 클래스

57 16절. java.time 패키지 날짜와 시간에 대한 정보 얻기 LocalDateTime/ZonedDateTime
isLeapYear()는 toLocalDate() 메소드로 LocalDate로 변환 후 사용 ZonedDateTime에서 제공하는 추가 메소드

58 16절. java.time 패키지 날짜와 시간을 조작하기 (p.566~559) 빼기와 더하기
빼기 – minus + 변수 (long) 의 형태 Ex) minusYears(long)  년 빼기 더하기 – plus + 변수 (long) 의 형태

59 16절. java.time 패키지 변경하기 with(TemporalAdjuster adjuster)
현재 날짜를 기준으로 상대적 날짜 리턴 TemporalAdjuster 객체는 아래 표에 있는 정적 메소드로 얻음

60 16절. java.time 패키지 날짜와 시간을 비교하기 Period: 년, 달, 일의 양을 나타내는 날짜 기준 클래스
Duration: 시, 분, 초, 나노초의 양을 나타내는 시간 기준 클래스

61 16절. java.time 패키지 Period와 Duration between() 메소드의 차이점
년, 달, 일, 초의 단순 차이를 리턴 ChronoUnit의 between() 전체 시간을 기준으로 차이를 리턴

62 16절. java.time 패키지 파싱과 포맷팅 파싱(Parsing) 메소드 (p.563~565)
파싱: 주어진 문자열로 날짜와 시간을 생성 포맷팅: 날짜와 시간을 형식화된 문자열로 변환 파싱(Parsing) 메소드 (p.563~565) 상황에 맞는 포맷 변환 같이 사용

63 16절. java.time 패키지 포맷팅(Formatting) 메소드 날짜와 시간을 포맷팅된 문자열로 변환

64


Download ppt "11장. 기본 API 클래스."

Similar presentations


Ads by Google