SlideShare a Scribd company logo
1 of 36
Download to read offline
익명 객체
정의
- 이름이 없는 객체.
- 단독으로 생성할 수 없고 클래스를 상속하거나 인터페이스를 구현해
야만 생성할 수 있다.
- UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적.
- 필드의 초기값이나 로컬변수의 초기값, 매개 변수의 매개값으로 대입.
익명 자식 객체 생성
class Child extends Parent { } //자식 클래스 생성
class A {
Parent field = new Child();// 필드에 자식 객체를 대입
void method() {
Parent localVar = new Child();
} //로컬변수에자식객체를대입
}
class A {
Parent field = new Parent(){
int childField;
void childMethod() {}
@Override
void parentMethod() {}
};
}
자식클래스가 재사용되지 않고, 해당 필드와 변수의 초기값으로만
사용할 경우 익명객체 생성해서 초기값으로 대입.
기본 API 클래스
- Application Programming Interface로 라이브러리라고도 부름.
- http://docs.oracle.com/javase/8/docs/api/
- java.lang & java.util 패키지
- Object 클래스(java.lang)
- Objects 클래스(java.util)
- System 클래스(java.lang)
- Class 클래스(java.lang)
- String 클래스(java.lang)
- StringTokenizer 클래스(java.util)
- StringBuffer, StringBuilder 클래스(java.lang)
- 정규 표현식과 Pattern 클래스(java.util)
- Arrays 클래스(java.util)
- Wrapper 클래스(java.lang)
- Math, Random 클래스(java.lang & java.util)
- Date, Calender 클래스(java.util)
- Format 클래스(java.text)
- java.time 패키지
java.lang 패키지
import 없이 사용 가능.
->자바 프로그램의 기본적인 클래스를 담고 있는 패키지.
java.util 패키지
Object 클래스(java.lang)
- 암시적으로 java.lang.Object를 상속.(extends가 없으면)
- 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다.
- 자바의 최상위 부모 클래스.
Object 클래스(java.lang)
객체 비교(equals())
public boolean equals(Object obj) { ... }
- 매개 타입은 Object로 Object가 최상위 타입이므로
모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문이다.
- 두 객체가 동일한 객체라면 true 리턴하고 그렇지 않으면 false리턴
Object obj1 = new Object();
Object obj2 = new Object();
boolean result = obj1.equals(obj2);
//boolean result = (obj1 == obj2)
- 논리적으로 동등하다는 의미는 같은 객체이든 다른 객체이든 상관없이
객체가 저장하고 있는 데이터가 동일함을 뜻한다.(String 클래스)
- 다르게 사용하고 싶다면 Object의 equals()를 오버라이딩해서 사용하
면 된다.
Object 클래스(java.lang)
객체 해시코드(hashCode())
- 객체를 식별할 하나의 정수값.
- 리턴값은 객체마다 다른 값을 가지고 있다.
Object 클래스(java.lang)
객체 문자 정보(toString())
- 객체의 문자정보를 리턴.("클래스명@16진수해시코드")
e.g. java.lang.Object@de6ced
- Object의 toString()의 리턴값은 자바 app에서는 쓸모 없으므로
오버라이딩(재정의)해서 사용하도록 한다.
Object 클래스(java.lang)
객체 복제(clone())
얇은 복제
깊은 복제
- 단순히 필드값을 복제해서
객체를 복제하는 것.
- 참조 객체를 변경하면 원본
객체도 변경된 객체를 가지게
된다는 단점.
- 참조하고 있는 객체도 복제
하는 것.
Object 클래스(java.lang)
객체 소멸자(finalize())
- 참조하지 않는 배열이나 객체는 Garbage Collection이 힙 영역에서
자동적으로 소멸시키는데 이 때 사용하는 메소드.
- 만약 객체가 소멸되기 전에 마지막으로 사용했던 자원을 닫고 싶거
나 저장하고 싶을 때에는 오버라이딩하면 된다.
Objects 클래스(java.util)
- 객체 비교, 해시코드 생성, null 여부, 객체 문자열 리턴 등의 연산
을 수행하는 정적 메소드들로 구성.
Objects 클래스(java.util)
- 두 객체를 비교자(comparator)로 비교해서 int값을 리턴.
(a > b : 양수, a < b : 음수, a = b : 0)
- 리턴값을 바꾸고 싶으면 Override.
- Comparator는 제네릭 인터페이스 타입으로 두 객체를 비교하는
compare(T a, T b) 메소드가 정의.
객체 비교(compare(T a, T b, Comparator<T> c))
동등 비교(equals() & deepEquals())
equals()
- 두 객체를 동등 비교.
- a, b 둘다 null일 경우 true 리턴. null이 아니면 a.equals(b) 리턴.
deepEquals()
- a, b가 서로 다른 배열일 경우, 항목값이 전부 같다면 true.
- Arrays.deepEquals()와 동일.
Objects 클래스(java.util)
- Objects.hash(Object... values) 메소드는 파라미터로 주어진 값들
을 이용해서 해시 코드를 생성하는 역할을 하는데, 주어진 파라미터
들로 배열을 생성하고 Arrays.hashCode(Object[])를 호출해서 해시
코드를 얻고 이 값을 리턴합니다.
- 이 메소드는 클래스가 hashCode()를 재정의할 때 리턴값을 생성
하기 위해 사용하면 좋음.
해시코드 생성(hash(), hashCode())
널 여부 조사(isNull(), nonNull(), requireNonNull())
객체 문자 정보(toString())
- isNull(Object obj)는 매개값이 null일 경우 true 리턴.
- requireNonNull은 not null일 경우 첫 번째 매개값을 리턴.
null 일 경우 NullPointerException 발생.
System 클래스(java.lang)
- 자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라
JVM(Java Virtual Machine)위에서 실행.
- 하지만, java.lang.System 클래스를 사용하면 운영체제의 일
부 기능을 이용할 수 있다.
- JVM 강제 종료.
- 정상 종료일 경우 0으로 지정, 비정상 종료일 경우 다른 값 지정.
프로그램 종료(exit())
System.exit(0);
- 메모리를 JVM가 알아서 자동으로 관리.
(메모리가 부족할 때와 CPU가 한가 할 때)
- JVM에게 가능한한 빨리 실행해 달라고 요청.
쓰레기 수집기 실행(gc())
System.gc();
System 클래스(java.lang)
- 컴퓨터의 시계로부터 현재 시간을 읽어서 long값을 리턴.
- 정상 종료일 경우 0으로 지정, 비정상 종료일 경우 다른 값 지정.
현재 시각 읽기(currentTimeMillis(), nanoTime())
long time = System.currentTimeMillis(); //밀리세컨드단위 리턴
long time = System.nanoTime(); //나노세컨드단위 리턴
- JVM이 시작할 때 자동 설정되는 시스템의 속성값을 리턴.
(JVM버전, 운영체제 종류, 사용자 아이디 등)
시스템 프로퍼티 읽기(getProperty())
String value = System.getProperty(String key);
- 운영체제는 실행되는 프로그램들에게 유용한 정보를 제공할 목적으로
환경 변수를 제공.
- 운영체제에서 이름과 값으로 관리되는 문자열 정보(프로그램 변수X)
환경 변수 읽기(getenv())
String value = System.getenv(String name);
Class 클래스(java.lang)
- 클래스와 인터페이스의 메타 데이터를 java.lang.Class 클래스로 관리.
(클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보)
Class 객체 얻기(getClass(), forName())
Class clazz = obj.getClass();
- Object클래스에 있는 getClass() 이용.
- forName()은 클래스 전체 이름을 매개값으로 받고 Class 객체를 리턴.
리플렉션
Constructor[] constructors = clazz.getDeclasredConstructors();
Field[] field = clazz.getDeclaredFields();
Method[] methods = clazz.getDeclaredMethods();
- Class 객체를 이용하면 클래스의 생성자, 필드, 메소드 정보를 알아낼 수 있
다.
(리플렉션)
Class 클래스(java.lang)
동적 객체 생성(newInstance())
try {
Class clasis = Class.forName("런타임 시 결정되는 클래스 이름");
Object obj = new clasis.newInstance();
} catch (ClassNotFoundException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
}
- Class 객체를 이용하면 new 연산자를 사용하지 않고 동적으로 객체 생성 가능.
- 런타임 시에 클래스 이름이 결정되는 경우에 사용.
String 클래스(java.lang)
- 자바의 문자열은 java.lang.String 클래스의 인스턴스로 관리.
- 다양한 생성자를 이용해서 직접 String 객체를 생성할 수 있다.
// 배열 전체를 String 객체로 생성
String str = new String(byte[] bytes);
// 배열을 지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, String charsetName);
// 배열의 offset 인덱스 위치로부터 length만큼 String 객체로 생성
String str = new String(byte[] bytes, int offset, int length);
// 지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, int offset, int length, String
charsetName);
String 클래스(java.lang)
String 메소드(중요)
cf) toLowerCase() & toUpperCase()
=> 문자열을 모두 소문자로 바꾼 새로운 문자열을 생성한 후 리턴.
=> 문자열을 모두 대문자로 바꾼 새로운 문자열을 생성한 후 리턴.
StringTokenizer 클래스(java.util)
- 문자열이 특정 구분자로 연결되어 있을 경우 구분자를 기준으로 분리 하
기
위해서는 String.split()나 java.util.StringTokenizer 클래스 이용.
(split()는 정규표현식으로 구분, StringTokenizer클래스는 문자로 구분)
StringTokenizr st = new StringTokenizer("문자열", "구분자");
StringBuffer, StringBuilder 클래스(java.lang)
- 문자열을 저장하는 String은 내부의 문자열을 수정할 수 없습니다.
예를 들어 String의 replace() 메소드는 내부의 문자를 대치하는 것이 아니라,
대치된 새로운 문자열을 리턴.
- 문자열을 변경하는 작업이 많을 경우에는 String 클래스를 사용하는 것보다
java.lang 패키지의 StringBuffer 또는 StringBuilder 클래스를 사용하는
것이 좋다.
- 이 두 클래스는 내부 버퍼에 문자열을 저장해 두고 추가, 수정, 삭제 할 수
있도록 설계.
정규표현식
- 문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 할 필요가 있을
때 사용.
- 예를 들어, 이메일, 전화번호를 사용자가 제대로 입력했는지 확인해야 할 때
정규 표현식과 비교.
Pattern 클래스(java.util)
- 정규표현식으로 문자열을 검증할 때 사용.
- java.util.regex.Pattern 클래스의 정적 메소드인 matchs()가 제공.
- boolean값으로 리턴.
boolean result = Pattern.matches("정규식", "검증할 문자열");
Arrays 클래스(java.util)
- 배열 조작 기능.(배열 복사, 항목 정렬, 항목 검색)
- 단순한 배열 복사는 System.arraycopy().
Wrapper 클래스(java.lang)
- 기본 타입(byte, char, short, int 등)의 값을 갖는 객체를 생성.
- 포장하고 있는 기본타입의 값은 외부에서 변경할 수 없다.
- 바꾸고 싶으면 새로운 포장 객체 만들어야 함.
- 박싱 : 기본 타입의 값을 포장 객체로 만드는 과정.
- 언박싱 : 포장 객체에서 기본 타입의 값을 얻어내는 과정.
Integer obj = 100; // 자동 박싱
Integer obj = new Integer(200);
int value1 = obj; // 자동 언박싱
int value2 = obj + 100; // 자동 언박싱
Wrapper 클래스(java.lang)
※ 문자열을 기본타입 값으로 변환
: int value1 = Integer.parseInt("50");
※포장 값 비교
- == 와 != 사용 불가.
- Wrapper 클래스의 equals() 메소드 사용.
Math 클래스(java.lang)
- java.lang.Math
Random 클래스(java.util)
- java.util.Random 클래스는 난수를 얻어내기 위해 사용.
- Math.random()과는 달리 Random 클래스는 boolean, int, long,
float, double 난수를 얻을 수 있다.
- 종자값(seed값을 같게 주면 같은 난수를 얻는다.
Date 클래스(java.util)
- 날짜를 표현하는 클래스.
- 객체 간에 날짜 정보를 주고 받을 때 주로 사용.
- Date() 생성자만 주로 사용.
Date now = new Date();
- toString()를 이용하여 현재 날짜를 문자열로 받을 수 있다.
Calender 클래스(java.util)
- 달력을 표현한 클래스.
- 추상클래스이므로 new 연산자를 사용해서 인스턴스를 생성할 수 없다.
(나라마다 날짜와 시간 계산 방법이 다르므로)
- get() 메소드를 이용해서 날짜와 시간에 대한 정보를 얻을 수 있다.
Format 클래스(java.text)
숫자 형식 클래스(DecimalFormat)
- 형식클래스는 원하는 형식으로 변환 시켜주는 클래스.
DecimalFormat df = new DecimalFormat("#,###.0");
String result = df.format(1000000000.969);
Format 클래스(java.text)
날짜 형식 클래스(SimpleDateFormat)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 mm월 dd일");
String strDate = sdf.format(new Date());
문자열 형식 클래스(MessageFormat)
String text = "회원 ID: {0} n이름: {1} n회원 전화: {2}";
String result1 = MessageFormat.format(text, id, name, tel);
java.time 패키지
- 자바 8버전에 생긴 패키지.
- 날짜와 시간을 나타내는 API.
java.time 패키지
날짜와 시간 정보 얻기
java.time 패키지
날짜와 시간 비교하기

More Related Content

What's hot

자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초진수 정
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdfHyosang Hong
 
파이썬 xml 이해하기
파이썬 xml 이해하기파이썬 xml 이해하기
파이썬 xml 이해하기Yong Joon Moon
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형Hyosang Hong
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수유진 변
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기Yong Joon Moon
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229Yong Joon Moon
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기Yong Joon Moon
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기 Yong Joon Moon
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기 Yong Joon Moon
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기Yongha Yoo
 

What's hot (20)

자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
파이썬 xml 이해하기
파이썬 xml 이해하기파이썬 xml 이해하기
파이썬 xml 이해하기
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
Java lambda
Java lambdaJava lambda
Java lambda
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기
 
JDK 변천사
JDK 변천사JDK 변천사
JDK 변천사
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 
Java class
Java classJava class
Java class
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기
 
파이썬 심화
파이썬 심화파이썬 심화
파이썬 심화
 

Viewers also liked

자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)Chang-Hwan Han
 
java lang
java langjava lang
java langnurma
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava흥래 김
 
Server performance test tool
Server performance test toolServer performance test tool
Server performance test toolChang-Hwan Han
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략흥래 김
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향QooJuice
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기duriepark 유현석
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)Seung-June Lee
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화흥래 김
 

Viewers also liked (16)

Java API, Exceptions and IO
Java API, Exceptions and IOJava API, Exceptions and IO
Java API, Exceptions and IO
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
 
java lang
java langjava lang
java lang
 
[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava[2012 자바카페 OPEN 세미나] Introduction to google guava
[2012 자바카페 OPEN 세미나] Introduction to google guava
 
3. stream api
3. stream api3. stream api
3. stream api
 
Server performance test tool
Server performance test toolServer performance test tool
Server performance test tool
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
Vert.x vs akka
Vert.x vs akkaVert.x vs akka
Vert.x vs akka
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
 

Similar to 이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)

Swift3 : class and struct(+property+method)
Swift3 : class and struct(+property+method)Swift3 : class and struct(+property+method)
Swift3 : class and struct(+property+method)승욱 정
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsJavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsHyuncheol Jeon
 
Collection framework
Collection frameworkCollection framework
Collection frameworkssuser34b989
 
자바스크립트 패턴 3장
자바스크립트 패턴 3장자바스크립트 패턴 3장
자바스크립트 패턴 3장Software in Life
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7Yeonah Ki
 
자바스크립트 프로토타입 및 클래스
자바스크립트 프로토타입 및 클래스자바스크립트 프로토타입 및 클래스
자바스크립트 프로토타입 및 클래스Lee Dong Wook
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈Yong Joon Moon
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화Sungchul Park
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학Greg Lee
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 
Why what how kotlin
Why what how kotlinWhy what how kotlin
Why what how kotlinSewonKo
 

Similar to 이것이 자바다 Chap.11 기본 API 클래스(java)(KOR) (20)

Java(1/4)
Java(1/4)Java(1/4)
Java(1/4)
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Swift3 : class and struct(+property+method)
Swift3 : class and struct(+property+method)Swift3 : class and struct(+property+method)
Swift3 : class and struct(+property+method)
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsJavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and Constructors
 
Collection framework
Collection frameworkCollection framework
Collection framework
 
자바스크립트 패턴 3장
자바스크립트 패턴 3장자바스크립트 패턴 3장
자바스크립트 패턴 3장
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
Scala
ScalaScala
Scala
 
자바스크립트 프로토타입 및 클래스
자바스크립트 프로토타입 및 클래스자바스크립트 프로토타입 및 클래스
자바스크립트 프로토타입 및 클래스
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈
 
Javascript
JavascriptJavascript
Javascript
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화
 
Jvm
JvmJvm
Jvm
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
Why what how kotlin
Why what how kotlinWhy what how kotlin
Why what how kotlin
 

이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)

  • 1. 익명 객체 정의 - 이름이 없는 객체. - 단독으로 생성할 수 없고 클래스를 상속하거나 인터페이스를 구현해 야만 생성할 수 있다. - UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적. - 필드의 초기값이나 로컬변수의 초기값, 매개 변수의 매개값으로 대입.
  • 2. 익명 자식 객체 생성 class Child extends Parent { } //자식 클래스 생성 class A { Parent field = new Child();// 필드에 자식 객체를 대입 void method() { Parent localVar = new Child(); } //로컬변수에자식객체를대입 } class A { Parent field = new Parent(){ int childField; void childMethod() {} @Override void parentMethod() {} }; } 자식클래스가 재사용되지 않고, 해당 필드와 변수의 초기값으로만 사용할 경우 익명객체 생성해서 초기값으로 대입.
  • 3. 기본 API 클래스 - Application Programming Interface로 라이브러리라고도 부름. - http://docs.oracle.com/javase/8/docs/api/ - java.lang & java.util 패키지 - Object 클래스(java.lang) - Objects 클래스(java.util) - System 클래스(java.lang) - Class 클래스(java.lang) - String 클래스(java.lang) - StringTokenizer 클래스(java.util) - StringBuffer, StringBuilder 클래스(java.lang) - 정규 표현식과 Pattern 클래스(java.util) - Arrays 클래스(java.util) - Wrapper 클래스(java.lang) - Math, Random 클래스(java.lang & java.util) - Date, Calender 클래스(java.util) - Format 클래스(java.text) - java.time 패키지
  • 4. java.lang 패키지 import 없이 사용 가능. ->자바 프로그램의 기본적인 클래스를 담고 있는 패키지.
  • 6. Object 클래스(java.lang) - 암시적으로 java.lang.Object를 상속.(extends가 없으면) - 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다. - 자바의 최상위 부모 클래스.
  • 7. Object 클래스(java.lang) 객체 비교(equals()) public boolean equals(Object obj) { ... } - 매개 타입은 Object로 Object가 최상위 타입이므로 모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문이다. - 두 객체가 동일한 객체라면 true 리턴하고 그렇지 않으면 false리턴 Object obj1 = new Object(); Object obj2 = new Object(); boolean result = obj1.equals(obj2); //boolean result = (obj1 == obj2) - 논리적으로 동등하다는 의미는 같은 객체이든 다른 객체이든 상관없이 객체가 저장하고 있는 데이터가 동일함을 뜻한다.(String 클래스) - 다르게 사용하고 싶다면 Object의 equals()를 오버라이딩해서 사용하 면 된다.
  • 8. Object 클래스(java.lang) 객체 해시코드(hashCode()) - 객체를 식별할 하나의 정수값. - 리턴값은 객체마다 다른 값을 가지고 있다.
  • 9. Object 클래스(java.lang) 객체 문자 정보(toString()) - 객체의 문자정보를 리턴.("클래스명@16진수해시코드") e.g. java.lang.Object@de6ced - Object의 toString()의 리턴값은 자바 app에서는 쓸모 없으므로 오버라이딩(재정의)해서 사용하도록 한다.
  • 10. Object 클래스(java.lang) 객체 복제(clone()) 얇은 복제 깊은 복제 - 단순히 필드값을 복제해서 객체를 복제하는 것. - 참조 객체를 변경하면 원본 객체도 변경된 객체를 가지게 된다는 단점. - 참조하고 있는 객체도 복제 하는 것.
  • 11. Object 클래스(java.lang) 객체 소멸자(finalize()) - 참조하지 않는 배열이나 객체는 Garbage Collection이 힙 영역에서 자동적으로 소멸시키는데 이 때 사용하는 메소드. - 만약 객체가 소멸되기 전에 마지막으로 사용했던 자원을 닫고 싶거 나 저장하고 싶을 때에는 오버라이딩하면 된다.
  • 12. Objects 클래스(java.util) - 객체 비교, 해시코드 생성, null 여부, 객체 문자열 리턴 등의 연산 을 수행하는 정적 메소드들로 구성.
  • 13. Objects 클래스(java.util) - 두 객체를 비교자(comparator)로 비교해서 int값을 리턴. (a > b : 양수, a < b : 음수, a = b : 0) - 리턴값을 바꾸고 싶으면 Override. - Comparator는 제네릭 인터페이스 타입으로 두 객체를 비교하는 compare(T a, T b) 메소드가 정의. 객체 비교(compare(T a, T b, Comparator<T> c)) 동등 비교(equals() & deepEquals()) equals() - 두 객체를 동등 비교. - a, b 둘다 null일 경우 true 리턴. null이 아니면 a.equals(b) 리턴. deepEquals() - a, b가 서로 다른 배열일 경우, 항목값이 전부 같다면 true. - Arrays.deepEquals()와 동일.
  • 14. Objects 클래스(java.util) - Objects.hash(Object... values) 메소드는 파라미터로 주어진 값들 을 이용해서 해시 코드를 생성하는 역할을 하는데, 주어진 파라미터 들로 배열을 생성하고 Arrays.hashCode(Object[])를 호출해서 해시 코드를 얻고 이 값을 리턴합니다. - 이 메소드는 클래스가 hashCode()를 재정의할 때 리턴값을 생성 하기 위해 사용하면 좋음. 해시코드 생성(hash(), hashCode()) 널 여부 조사(isNull(), nonNull(), requireNonNull()) 객체 문자 정보(toString()) - isNull(Object obj)는 매개값이 null일 경우 true 리턴. - requireNonNull은 not null일 경우 첫 번째 매개값을 리턴. null 일 경우 NullPointerException 발생.
  • 15. System 클래스(java.lang) - 자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라 JVM(Java Virtual Machine)위에서 실행. - 하지만, java.lang.System 클래스를 사용하면 운영체제의 일 부 기능을 이용할 수 있다. - JVM 강제 종료. - 정상 종료일 경우 0으로 지정, 비정상 종료일 경우 다른 값 지정. 프로그램 종료(exit()) System.exit(0); - 메모리를 JVM가 알아서 자동으로 관리. (메모리가 부족할 때와 CPU가 한가 할 때) - JVM에게 가능한한 빨리 실행해 달라고 요청. 쓰레기 수집기 실행(gc()) System.gc();
  • 16. System 클래스(java.lang) - 컴퓨터의 시계로부터 현재 시간을 읽어서 long값을 리턴. - 정상 종료일 경우 0으로 지정, 비정상 종료일 경우 다른 값 지정. 현재 시각 읽기(currentTimeMillis(), nanoTime()) long time = System.currentTimeMillis(); //밀리세컨드단위 리턴 long time = System.nanoTime(); //나노세컨드단위 리턴 - JVM이 시작할 때 자동 설정되는 시스템의 속성값을 리턴. (JVM버전, 운영체제 종류, 사용자 아이디 등) 시스템 프로퍼티 읽기(getProperty()) String value = System.getProperty(String key); - 운영체제는 실행되는 프로그램들에게 유용한 정보를 제공할 목적으로 환경 변수를 제공. - 운영체제에서 이름과 값으로 관리되는 문자열 정보(프로그램 변수X) 환경 변수 읽기(getenv()) String value = System.getenv(String name);
  • 17. Class 클래스(java.lang) - 클래스와 인터페이스의 메타 데이터를 java.lang.Class 클래스로 관리. (클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보) Class 객체 얻기(getClass(), forName()) Class clazz = obj.getClass(); - Object클래스에 있는 getClass() 이용. - forName()은 클래스 전체 이름을 매개값으로 받고 Class 객체를 리턴. 리플렉션 Constructor[] constructors = clazz.getDeclasredConstructors(); Field[] field = clazz.getDeclaredFields(); Method[] methods = clazz.getDeclaredMethods(); - Class 객체를 이용하면 클래스의 생성자, 필드, 메소드 정보를 알아낼 수 있 다. (리플렉션)
  • 18. Class 클래스(java.lang) 동적 객체 생성(newInstance()) try { Class clasis = Class.forName("런타임 시 결정되는 클래스 이름"); Object obj = new clasis.newInstance(); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (IllegalAccessException e) { } - Class 객체를 이용하면 new 연산자를 사용하지 않고 동적으로 객체 생성 가능. - 런타임 시에 클래스 이름이 결정되는 경우에 사용.
  • 19. String 클래스(java.lang) - 자바의 문자열은 java.lang.String 클래스의 인스턴스로 관리. - 다양한 생성자를 이용해서 직접 String 객체를 생성할 수 있다. // 배열 전체를 String 객체로 생성 String str = new String(byte[] bytes); // 배열을 지정한 문자셋으로 디코딩 String str = new String(byte[] bytes, String charsetName); // 배열의 offset 인덱스 위치로부터 length만큼 String 객체로 생성 String str = new String(byte[] bytes, int offset, int length); // 지정한 문자셋으로 디코딩 String str = new String(byte[] bytes, int offset, int length, String charsetName);
  • 20. String 클래스(java.lang) String 메소드(중요) cf) toLowerCase() & toUpperCase() => 문자열을 모두 소문자로 바꾼 새로운 문자열을 생성한 후 리턴. => 문자열을 모두 대문자로 바꾼 새로운 문자열을 생성한 후 리턴.
  • 21. StringTokenizer 클래스(java.util) - 문자열이 특정 구분자로 연결되어 있을 경우 구분자를 기준으로 분리 하 기 위해서는 String.split()나 java.util.StringTokenizer 클래스 이용. (split()는 정규표현식으로 구분, StringTokenizer클래스는 문자로 구분) StringTokenizr st = new StringTokenizer("문자열", "구분자");
  • 22. StringBuffer, StringBuilder 클래스(java.lang) - 문자열을 저장하는 String은 내부의 문자열을 수정할 수 없습니다. 예를 들어 String의 replace() 메소드는 내부의 문자를 대치하는 것이 아니라, 대치된 새로운 문자열을 리턴. - 문자열을 변경하는 작업이 많을 경우에는 String 클래스를 사용하는 것보다 java.lang 패키지의 StringBuffer 또는 StringBuilder 클래스를 사용하는 것이 좋다. - 이 두 클래스는 내부 버퍼에 문자열을 저장해 두고 추가, 수정, 삭제 할 수 있도록 설계.
  • 23. 정규표현식 - 문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 할 필요가 있을 때 사용. - 예를 들어, 이메일, 전화번호를 사용자가 제대로 입력했는지 확인해야 할 때 정규 표현식과 비교.
  • 24. Pattern 클래스(java.util) - 정규표현식으로 문자열을 검증할 때 사용. - java.util.regex.Pattern 클래스의 정적 메소드인 matchs()가 제공. - boolean값으로 리턴. boolean result = Pattern.matches("정규식", "검증할 문자열");
  • 25. Arrays 클래스(java.util) - 배열 조작 기능.(배열 복사, 항목 정렬, 항목 검색) - 단순한 배열 복사는 System.arraycopy().
  • 26. Wrapper 클래스(java.lang) - 기본 타입(byte, char, short, int 등)의 값을 갖는 객체를 생성. - 포장하고 있는 기본타입의 값은 외부에서 변경할 수 없다. - 바꾸고 싶으면 새로운 포장 객체 만들어야 함. - 박싱 : 기본 타입의 값을 포장 객체로 만드는 과정. - 언박싱 : 포장 객체에서 기본 타입의 값을 얻어내는 과정. Integer obj = 100; // 자동 박싱 Integer obj = new Integer(200); int value1 = obj; // 자동 언박싱 int value2 = obj + 100; // 자동 언박싱
  • 27. Wrapper 클래스(java.lang) ※ 문자열을 기본타입 값으로 변환 : int value1 = Integer.parseInt("50"); ※포장 값 비교 - == 와 != 사용 불가. - Wrapper 클래스의 equals() 메소드 사용.
  • 29. Random 클래스(java.util) - java.util.Random 클래스는 난수를 얻어내기 위해 사용. - Math.random()과는 달리 Random 클래스는 boolean, int, long, float, double 난수를 얻을 수 있다. - 종자값(seed값을 같게 주면 같은 난수를 얻는다.
  • 30. Date 클래스(java.util) - 날짜를 표현하는 클래스. - 객체 간에 날짜 정보를 주고 받을 때 주로 사용. - Date() 생성자만 주로 사용. Date now = new Date(); - toString()를 이용하여 현재 날짜를 문자열로 받을 수 있다.
  • 31. Calender 클래스(java.util) - 달력을 표현한 클래스. - 추상클래스이므로 new 연산자를 사용해서 인스턴스를 생성할 수 없다. (나라마다 날짜와 시간 계산 방법이 다르므로) - get() 메소드를 이용해서 날짜와 시간에 대한 정보를 얻을 수 있다.
  • 32. Format 클래스(java.text) 숫자 형식 클래스(DecimalFormat) - 형식클래스는 원하는 형식으로 변환 시켜주는 클래스. DecimalFormat df = new DecimalFormat("#,###.0"); String result = df.format(1000000000.969);
  • 33. Format 클래스(java.text) 날짜 형식 클래스(SimpleDateFormat) SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 mm월 dd일"); String strDate = sdf.format(new Date()); 문자열 형식 클래스(MessageFormat) String text = "회원 ID: {0} n이름: {1} n회원 전화: {2}"; String result1 = MessageFormat.format(text, id, name, tel);
  • 34. java.time 패키지 - 자바 8버전에 생긴 패키지. - 날짜와 시간을 나타내는 API.