SlideShare a Scribd company logo
1 of 27
Download to read offline
Java(2/4)
taesoo.kim87@gmail.com 김태수
Part1. Inheritance
1) 개괄내용(1)
1 상속
Inheritance 부모클래스의 멤버를 자식클래스에 물려줌
클래스 상속 class 자식클래스 extends 부모클래스{;}
상속제한 1개의 부모클래스만 상속할 수 있다.
부모생성자호출 public DmbCellPhone(){super();}
매소드 재정의
(OverRiding)
상속된 메소드를 자식클래스에서
수정하는 메소드 오버라이딩 기능.
메소드 오버라이딩
주의점
부모 메소드와 동일 시그니쳐로 재정의.
접근제한을 더 강하게 오버라이딩 불가.
새로운 예외를 throws불가.
부모메소드호출 super.method();
final클래스 상속불가한클래스(자식클래스확장불가)
final메소드 오버라이딩이 불가한 메소드
2) 개괄내용(2)
1 상속
Protected 접근 제한자
부모클래스의protected멤버는
자식생성자의 super()키워드로 호출가능.
자동타입변환
(Promotion)
부모클래스 변수 = 자식클래스타입;
다형성 부모클래스의 타입변환 허용으로 구현
필드의 다형성 각객체가 다른객체로교체될수있도록지원
매개변수의다형성
매개변수에 자식타입객체를 지정하여구현.
Vehicle veh=bus;
강제 타입 변환(Casting) 자식클래스 변수=(자식클래스)부모클래스타입;
강제타입변환 응용
자식타입이 부모타입으로 자동변환되면 부모타입의 필드와 메
소드만 사용가능.
자식타입 선언 필드와 메소드가 필요하면 강제 타입변환으로
자식타입으로 재변환하여
자식 메소드와 필드를 사용.
객체타입확인(instanceof)
객체확인을위해 사용.
Boolean result=객체instanceof타입;
3) 추상클래스
1 상속
개요 abstract는 클래스의 공통 특징을 추출한 클래스
용도
실체 클래스의 공통된 필드/메소드이름 통일.
실체 클래스 작성 시간 절약.
선언 public abstarct class AbtractClass{;}
실체클래스상속 public class RealClass extends AbClass{;}
4) 인터페이스(1)
1 상속
개요
객체의 사용방법을 정의한 타입.
객체의 교환성을 높여줌.
다형성을 구현하는 역할.
자바8에서 람다식이
함수적 인터페이스의 구현객체를 생성.
역할 개발코드와 객체가 서로 통신하는 접점역할
동작방식
개발코드가 인터페이스의 메소드 호출
->인터페이스가 객체의 메소드를 호출시킴
의의
개발코드 수정없이 사용객체 변경가능하게함.
코드변경없이 실행내용과 리턴값을 다양화함.
선언 public interface RemoteControl{}
상수필드 인터페이스는초기화된상수만선언가능.
추상메소드
객체가 가진 메소드를 설명한것.
리턴 타입이 무엇인지만 알려 줌.
실행부는 구현객체가 가지고 있음.
디폴트메소드
인터페이스에서 선언만되고 구현객체가 가지고
있는 인스턴스 메소드.
기존인터페이스를 확장해서 새로운기능을
5) 인터페이스(2)
1 상속
정적메소드
자바8부터 작성가능,
디폴트 메소드와 달리 객체없이
인터페이스만으로 호출 가능.
상수필드선언
public static final int val=1;
public interface RemoteControl{
public int MAX=10; public int MIN=0;}
추상메소드선언 public abstract int remoteMethod(int a);
디폴트메소드선언 public default int defualtMethod(int a);
정적메소드선언 public static int staticMethod(int a);
인터페이스 구현
객체는 인터페이스에서 정의된 추상메소드와
동일한 시그니쳐의 메소드를 가져야함.
이를 인터페이스의 구현(implement)객체라
하며, 구현객체를 생성하는 클래스를 구현
클래스라고 함.
구현클래스
public class 구현클래스 implements InterfaceClass{
//실체메소드선언;}
메소드제한 인터페이스의 모든 메소드는 public접근제한
6) 인터페이스(3)
1 상속
익명구현객체
자바소스파일작성없이 구현객체를 만들수있음
인터페이스 변수 = new 인터페이스(){
//인터페이스 선언된 추상메소드의 실제 메소드 선언;}
다중인터페이스
구현 클래스
객체는 다수의 인터페이스 타입으로 사용할 수 있다.
인터페이스A와 B가 메소드를 호출할 수 있으려면 두
인터페이스를 모두 구현되어야 하며, 다음과 같이 작성되어야함.
Public class 구현클래스명 implements
인터페이스A, 인터페이스B{
//인터페이스A와 B에 선언된 추상메소드의 실체 메소드 선언}
인터페이스사용
RemoteControl rc;//rc는 인터페이스
rc=new TV();
rc=new Audio();
추상메소드사용
RemoteControl rc;//rc는 인터페이스
rc=new TV();
rc.turnOff();//TV의 turnOff()실행
디폴트메소드사용
RemoteControl rc;//rc는 인터페이스
rc=new TV();
rc.setMute(true);
7) 인터페이스(4)
1 상속
정적메소드사용 RemoteControl.changeBattery();
자동타입변환(예) 인터페이스 변수=구현객체
필드의다형성(예) Tire[] tires={ new Htire(), new Htire()};
강제타입변환
상속관계의 부모/자식클래스간 자동타입변환과
같은 맥락으로, 구현클래스로 강제타입변환을
함으로써 구현클래스의 필드와 메소드를
사용할 수 있다.
구현클래스 변수=(구현클래스)인터페이스변수;
객체타입확인
(instanceof)
if(vehicle instanceof Bus)
{Bus bus=(bus)vehicle;}
상속 예시
(다중상속가능)
public interface 하위인터페이스 extends
상위인터페이스1, 상위인터페이스2{;}
디폴트메소드
필요성
기존인터페이스 확장 및 기능 추가.
디폴트메소드를
가진 인터페이스
상속 방법
디폴트 메소드를 단순 상속.
디폴트 메소드를 재정의.
디폴트 메소드를 추상메소드로 재선언.
Part2. Memory II
2 Memory II
1)RDA[Runtime Data Areas](1)
개요
JVM이 프로그램을 수행하기 위해 OS로부터 할당 받은 메모리 공간
구성(5가지)
thread별로 존재 - PC Registers, JVM-Stacks,
NativeMethod Stacks
모든 thread가 공유(동기화이슈) - Method Area, Heap
PC Register
Thread가 생성될때마다 생성.
Thread가 어떤명령을 실행하게 될지를 기록.
JVM-Stack의 Operand를 저장.
Method
Area
클래스 사용시에 클래스 저장.
클래스 변수(인스턴스변수)도 Method Area에 함께 생성.
new연산자로 클래스생성 후 메소드 실행시에 클래스 저장.
Type정보, Runtime Constant Pool, 필드정보, 메소드정보, 클래스 변수(static 변수) 저장
2 Memory II
2)RDA[Runtime Data Areas](2)
Heap
인스턴스가 생성되는 공간.
객체를 동적 생성하면 인스턴스가 Heap에 할당 됨.
레퍼런스 변수는 Heap에 포인터가 저장됨.
GC의 대상이 되는 영역.
JVM-Stacks
Thread제어를 위해 사용되는 공간.
Thread마다 하나씩 생성됨.
단일 Thread마다 method가 호출될때 메모리 할당(push).
Method가 종료되면 메모리 반환(pop).
Method가 호출되면 method와 method정보가 stack에 적재.
Method호출이 종료되면 stack point에서 제거됨.
Method정보는 매개변수/지역변수/임시변수/어드레스 등을 포함.
각 스레드는 각각의 스택을 가지나, Heap은 공유.
때문에, Heap은thread-unsafe.
Native
Method
Stacks
자바 외 언어에서 제공하는 method나 lib(DLL, conf등)파일을 저장.
JNI를 통해 표준과 가까운 방식으로 구현 가능.
2 Memory II
3) 동적로딩
개요
java구동시 모든 코드가 JVM에 링크됨.
클래스는 참조되는 순간 동적으로 JVM에 링크되고
메모리에 로딩됨.
ClassLoader
동적 클래스 로딩은 ClassLoader를 통해 이루어짐.
기본 클래스 로더는 java.lang.ClassLoader
JVM이 구동되면, 부트스트랩 클래스 로더가 생성됨.
로드타임
동적 로딩
하나의 클래스를 로딩하는 과정에서 동적으로 필요한 클래스를 로딩.
(load-time dynamic loading)
런타임
동적 로딩
클래스를 로딩할 때가 아닌 코드를 실행하는 순간에 클래스를 로딩.
(run-time dynamic loading)
2 Memory II
4) 중첩클래스, 중첩인터페이스
개요 특정클래스와 관계를 맺는 관게클래스를 내부에 선언
장점
두 클래스의 멤버를 서로 쉽게접근, 외부에는 관계클래스를 감춰서
코드 복잡도를 낮춤.
인스턴스
멤버클래스
class A{ class B{ ; } }
//A객체생성해야 사용가능한 B중첩클래스
정적
멤버클래스
class A{ static class B{ ; } }
//A클래스로 바로 접근 할 수 있는 B 중첩 클래스
로컬클래스
class A{ void method() { class B ; } }
//method()가 실행할때만 사용할 수 있는 B중첩 클래스
형태
멤버클래스 : A$B.class
로컬클래스 : A$1B.class
접근제한
인스턴스멤버클래스 - 바깥클래스 인스턴스 필드초기값/메소드생성:O
정적필드 초기값/정적메소드 객체생성 :X
바깥클래스의 모든메소드/필드접근 :O
정적멤버클래스 - 모든 필드 초기값/정적메소드 객체 생성 :O
바깥클래스 정적필드/메소드 접근 :O
인스턴스 필드/메소드 접근 :X
로컬클래스 - final의 매개변수와 로컬변수만 사용
바깥클래스참조얻기
중첩클래스 내부에서 바깥클래스참조는 바깥클래스.this.필드||메소드();
중첩클래스 내부에서 중첩클래스 참조는 this.필드||메소드();
2 Memory II
5) 프로세스와 스레드(1)
프로세스 실행중인 프로그램,자원,스레드로 구성
쓰레드
프로세스 내에서 실제 작업 수행. 모든 프로세스는 하나 이상의
쓰레드를 가지고 있음.
싱글쓰레드 프로세스: 자원+쓰레드, 하나의 쓰레드가 2개이상 작업처리
멀티쓰레드 프로세스=자원+n개의 쓰레드, 쓰레드와 작업이 1:1
- 단순히 CPU만 사용하는 연산작읍은 작업전환에 시간이 걸리지 않는
싱글쓰레드가 효율적.
- CPU이외의 자원을 사용하는 작업의 경우 멀티쓰레드 프로세스가
더 효율적
멀티쓰레딩
하나의 프로세스내에서 여러 쓰레드가 동시작업.
CPU사용율 향상
효율적 자원사용
사용자 응답성 향상
작업분리
동기화/교착상태 이슈
각 쓰레드가 균등한 부하를 갖도록 지향해야 함.
쓰레드 그룹
서로 관련된 쓰레드를 그룹으로 묶어서 제어.
쓰레드 그룹에 다른 쓰레드 그룹 포함 가능.
자신이 속한 쓰레드 그룹과 하위 쓰레드 그룹은 변경가능. 그외 불가.
모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함.
쓰레드 그룹을 지정하지 않고 생성된 쓰레드는 메인쓰레드 그룹에포함
쓰레드를 쓰레드 그룹에 포함시키려면 thread 생성자 사용.
2 Memory II
6) 프로세스와 스레드(2)
데몬 쓰레드
non-daemon 쓰레드(일반쓰레드)의 작업을 돕는 보조역할.
일반 쓰레드가 종료되면 자동 종료.
GC, 워드 프로세서의 자동저장, 자동 화면갱신등에 사용.
무한루프와 조건문으로 실행 후 대기하다가 특정 조건이 만족되면
작업수행하고 다시 대기하도록 작성됨.
boolean isDaemon():쓰레드가 데몬인지 확인.
void setDaemon(boolean on)스레드를 데몬쓰레드로 또는 사용자 쓰레드로 변경. 매개변수
가 true이면 데몬쓰레드로 변경.
setDaemon()은 반드시 start()호출 전 실행되어야 함.
쓰레드
생명주기
2 Memory II
7) 프로세스와 스레드(3)
반환형 메소드 설명
void interrupt()
sleep()이나 join()에 의해 일시정지
상태인 쓰레드를 실행 대기 상태로
만든다.
해당 쓰레드에서는 InterruptedException이 발생함
으로써
일시정지상태를 벗어나게 된다.
void join()
지정된 시간동안 쓰레드가 실행되도록 한다.
지정된 시간이 지나거나 작업이 종료되면 join()을
호출한 쓰레드로 다시 돌아와 실행을 계속한다.
void join(long millis)
void join(long millis, int nanos)
void resume()
suspend()에 의해 일시정지상태에
있는 쓰레드를 실행대기상태로 만든다.
2 Memory II
8) 프로세스와 스레드(4)
static void sleep(long millis) 지정된 시간(천분의 일초 단위)동안
쓰레드를 일시정지시킨다.
지정한 시간이 지나고 나면,
자동적으로 다시 실행대기상태가 된다.static void sleep(long millis, int nanos)
void stop()
쓰레드를 즉시 종료시킨다.
교착상태(dead-lock)에 빠지기 쉽기
때문에 deprecated 되었다.
void suspend()
쓰레드를 일시 정지시킨다.
resume()을 호출하면 재개된다
static void void yield()
실행 중에 다른 쓰레드에게
양보(yield)하고 실행대기상태가 된다.
반환형 메소드 설명
2 Memory II
9) 프로세스와 스레드(5)
상태 설명
NEW 쓰레드가 생성되고 아직 start()가 호출되지 않은 상태
RUNNABLE 실행 중 또는 실행 가능한 상태
BLOCKED
동기화블럭에 의해서 일시정지된 상태
(LOCK이 풀릴 때 까지 기다리는 상태)
WAITING,
TIMED_
WAITING
쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable)
일시 정지상태, TIMED_WAITING은 일시정지시간이 지정된 경우를 의미
TERMINATED 쓰레드의 작업이 종료된 상태
wait(), notify()
- 동기화의 효율을 높이기 위해 사용한다.
- Object 클래스의 정의되어 있으므로, 모든 객체에서 호출이 가능하다.
- 동기화 블록내에서만 사용할 수 있다.
- wait() : 객체의 lock을 풀고 해당 객체의 쓰레드를 대기상태로 둔다.
- notify() : 대기중인 쓰레드 중의 하나를 깨운다.
- notifyAll() : 대기중인 모든 쓰레드를 깨운다. 호출된 객체의 대기 중인 쓰레드만 해당 된다.
출처 http://gangzzang.tistory.com/m/post/75
Part3. Exception
3 Exception
1) 예외
종류 일반(Exception) / 실행예외(Runtime Exception)
예외클래스
java.lang.Exception클래스를 상속받는 모든 클래스(java.lang.[ClassNotFound|Interrupted|Runt
ime|...]Exception)
실행예외 실행예외는 컴파일러가 체크하지 않음. 개발자가 예외처리코드를 삽입해서 처리.
NullPointer
Exception
java.lang.NullPointerException, 객체참조가 없는(null값을 갖는) 상태의 참조변수로 객체 접근
연산자를(.)을 사용시 발생
ArrayIndexOut
BoundsException
java.lang.ArrayIndexOutOfBoundsException, 배열 인덱스 범위 초과 사용시 발생
NumberFromat
Exception
java.lang.NumberFormatException, 문자열 등의 데이터를 숫자로 변경할때 발생.
Integet.parseInt(String s); Double.parseDouble(String s)를 사용해서 문자열을 정수와 실수로
변환하여 오류 수정.
ClassCastException
타입변환(Casting)은 상/하위 클래스 또는 구현클래스/인터페이스 간에 발생. 이 관계 외의 경
우에서 캐스팅 시 발생.
3 Exception
2) 예외처리코드
형태 try-catch-finally
작성방법
try{
예외발생코드;
}catch ( 예외클래스 e){
예외처리;
}finally{
항상 실행되는 코드;
}
3 Exception
3) 예외종류별 처리코드
다중catch try{;}catch(예외1 e){;}catch(예외2 e){;}finally{;}
catch순서 하위 예외 클래스부터 상위 예외 클래스 순서로 작성
멀티catch catch(예외1 e || 예외2 e){;}
자동 리소스 닫기
try-with-resources사용. close() 메소드로 안전하게 리소스를 종료
try{;}catch(예외 e){;}
finally{
if(fis!=null){
try{
fis.close();
}catch(예외 e){ ; } } }
예외 떠넘기기
예외발생시 메소드를 호출한 곳으로 예외를 넘김.
public int method2() throws ClassNotFoundException{ ; }//catch문에서처리
사용자정의 예외/예외발생 사용자 정의 예외 클래스 선언 ->예외 발생
사용자정의
예외클래스선언
예시
public class BalanceInsufficientException extends Exception{
public BalanceInsufficientException(){}
public BalanceInsufficientException(String msg){ super(msg);}
}
예외발생
throw new XXXException();
throw new XXXException("msg");
예외정보얻기
getMessage(), printStackTrace()를 이용.
catch(예외 e){
String msg = e.getMessage();
e.printStackTrace();}
Part4. Wrapper
4 Wrapper Class
1) Wrapper(포장)클래스(1)
개요 기본타입의 값을 갖는 객체를 생성(기본타입값을 내부에 두고 포장)
박싱/언박싱 기본타입값을 포장객체로 만드는것을 박싱, 그 역을 언박싱이라고함.
기본타입 포장클래스 언박싱메소드
byte Byte num=obj.byteValue();
char Character ch=obj.charValue();
short Short num=obj.shortValue();
int Integet num=obj.intValue();
long Long num=obj.longValue();
float Float num=obj.floatValue();
double Double num=obj.doubleValue();
boolean Boolean bool=obj.booleanValue();
자동박싱 포장클래스타입에 기본값 대입될 경우 발생. Integer o=100;
자동언박싱 기본타입에 포장객체가 대입될 때 발생. int val1=Integer o=new Integer(1);
4 Wrapper Class
2) Wrapper(포장)클래스(2)
기본타입 문자열을 기본타입 값으로 변환하는 메소드
byte num=Byte.parseByte("10");
short num=Short.parseShort("10");
int num=Integer.parseInteger("10");
long num=Long.parseLong("10");
float num=Float.parseFloat("10.0F");
double num=Double.parseDouble("10.0");
boolean bool=Boolean.parseBoolean("true");
포장값 비교
언박싱하여 비교하거나 equals()메소드를 사용하면 내부값을 비교하도록
오버라이딩 되어있음.
Java(2/4)

More Related Content

What's hot

파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdfJi Hoon Lee
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기 Yong Joon Moon
 
Realm 코딩카페 - 이종찬
Realm   코딩카페 - 이종찬Realm   코딩카페 - 이종찬
Realm 코딩카페 - 이종찬Lee-Jong-Chan
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalHyuncheol Jeon
 
02 realm 모델 & 관계
02   realm 모델 & 관계02   realm 모델 & 관계
02 realm 모델 & 관계Lee-Jong-Chan
 
Class Loader_Wh apm
Class Loader_Wh apmClass Loader_Wh apm
Class Loader_Wh apm엑셈
 
자바스터디 3 2
자바스터디 3 2자바스터디 3 2
자바스터디 3 2jangpd007
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편Darion Kim
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guideSungchul Park
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http RequestNAVER D2
 
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&Csys4u
 
Runtime Data Areas_Wh apm
Runtime Data Areas_Wh apmRuntime Data Areas_Wh apm
Runtime Data Areas_Wh apm엑셈
 
Objective-C Runtime Programming Guide
Objective-C Runtime Programming GuideObjective-C Runtime Programming Guide
Objective-C Runtime Programming GuideSung-Kwan Kim
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 

What's hot (19)

파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdf
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 
Realm 코딩카페 - 이종찬
Realm   코딩카페 - 이종찬Realm   코딩카페 - 이종찬
Realm 코딩카페 - 이종찬
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
 
02 realm 모델 & 관계
02   realm 모델 & 관계02   realm 모델 & 관계
02 realm 모델 & 관계
 
Class Loader_Wh apm
Class Loader_Wh apmClass Loader_Wh apm
Class Loader_Wh apm
 
자바스터디 3 2
자바스터디 3 2자바스터디 3 2
자바스터디 3 2
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
 
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
 
Runtime Data Areas_Wh apm
Runtime Data Areas_Wh apmRuntime Data Areas_Wh apm
Runtime Data Areas_Wh apm
 
Objective-C Runtime Programming Guide
Objective-C Runtime Programming GuideObjective-C Runtime Programming Guide
Objective-C Runtime Programming Guide
 
Java(3/4)
Java(3/4)Java(3/4)
Java(3/4)
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 

Similar to Java(2/4)

제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화sung ki choi
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발NAVER D2
 
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?NAVER D2
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinDong Chan Shin
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
자바스터디(6기) 4
자바스터디(6기) 4자바스터디(6기) 4
자바스터디(6기) 4Jina Lee
 
Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)JungGeun Lee
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeYoung-Beom Rhee
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Park Jonggun
 
Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJavajigi Jaesung
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)문익 장
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가Vong Sik Kong
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 
Multi-thread : producer - consumer
Multi-thread : producer - consumerMulti-thread : producer - consumer
Multi-thread : producer - consumerChang Yoon Oh
 

Similar to Java(2/4) (20)

제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
자바스터디(6기) 4
자바스터디(6기) 4자바스터디(6기) 4
자바스터디(6기) 4
 
Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
 
Realm @Android
Realm @Android Realm @Android
Realm @Android
 
Java script
Java scriptJava script
Java script
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
Java Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte CodeJava Virtual Machine, Call stack, Java Byte Code
Java Virtual Machine, Call stack, Java Byte Code
 
Effective c++(chapter 5,6)
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
Flyweight
FlyweightFlyweight
Flyweight
 
JDK 변천사
JDK 변천사JDK 변천사
JDK 변천사
 
Multi-thread : producer - consumer
Multi-thread : producer - consumerMulti-thread : producer - consumer
Multi-thread : producer - consumer
 
Linq
LinqLinq
Linq
 

Java(2/4)

  • 3. 1) 개괄내용(1) 1 상속 Inheritance 부모클래스의 멤버를 자식클래스에 물려줌 클래스 상속 class 자식클래스 extends 부모클래스{;} 상속제한 1개의 부모클래스만 상속할 수 있다. 부모생성자호출 public DmbCellPhone(){super();} 매소드 재정의 (OverRiding) 상속된 메소드를 자식클래스에서 수정하는 메소드 오버라이딩 기능. 메소드 오버라이딩 주의점 부모 메소드와 동일 시그니쳐로 재정의. 접근제한을 더 강하게 오버라이딩 불가. 새로운 예외를 throws불가. 부모메소드호출 super.method(); final클래스 상속불가한클래스(자식클래스확장불가) final메소드 오버라이딩이 불가한 메소드
  • 4. 2) 개괄내용(2) 1 상속 Protected 접근 제한자 부모클래스의protected멤버는 자식생성자의 super()키워드로 호출가능. 자동타입변환 (Promotion) 부모클래스 변수 = 자식클래스타입; 다형성 부모클래스의 타입변환 허용으로 구현 필드의 다형성 각객체가 다른객체로교체될수있도록지원 매개변수의다형성 매개변수에 자식타입객체를 지정하여구현. Vehicle veh=bus; 강제 타입 변환(Casting) 자식클래스 변수=(자식클래스)부모클래스타입; 강제타입변환 응용 자식타입이 부모타입으로 자동변환되면 부모타입의 필드와 메 소드만 사용가능. 자식타입 선언 필드와 메소드가 필요하면 강제 타입변환으로 자식타입으로 재변환하여 자식 메소드와 필드를 사용. 객체타입확인(instanceof) 객체확인을위해 사용. Boolean result=객체instanceof타입;
  • 5. 3) 추상클래스 1 상속 개요 abstract는 클래스의 공통 특징을 추출한 클래스 용도 실체 클래스의 공통된 필드/메소드이름 통일. 실체 클래스 작성 시간 절약. 선언 public abstarct class AbtractClass{;} 실체클래스상속 public class RealClass extends AbClass{;}
  • 6. 4) 인터페이스(1) 1 상속 개요 객체의 사용방법을 정의한 타입. 객체의 교환성을 높여줌. 다형성을 구현하는 역할. 자바8에서 람다식이 함수적 인터페이스의 구현객체를 생성. 역할 개발코드와 객체가 서로 통신하는 접점역할 동작방식 개발코드가 인터페이스의 메소드 호출 ->인터페이스가 객체의 메소드를 호출시킴 의의 개발코드 수정없이 사용객체 변경가능하게함. 코드변경없이 실행내용과 리턴값을 다양화함. 선언 public interface RemoteControl{} 상수필드 인터페이스는초기화된상수만선언가능. 추상메소드 객체가 가진 메소드를 설명한것. 리턴 타입이 무엇인지만 알려 줌. 실행부는 구현객체가 가지고 있음. 디폴트메소드 인터페이스에서 선언만되고 구현객체가 가지고 있는 인스턴스 메소드. 기존인터페이스를 확장해서 새로운기능을
  • 7. 5) 인터페이스(2) 1 상속 정적메소드 자바8부터 작성가능, 디폴트 메소드와 달리 객체없이 인터페이스만으로 호출 가능. 상수필드선언 public static final int val=1; public interface RemoteControl{ public int MAX=10; public int MIN=0;} 추상메소드선언 public abstract int remoteMethod(int a); 디폴트메소드선언 public default int defualtMethod(int a); 정적메소드선언 public static int staticMethod(int a); 인터페이스 구현 객체는 인터페이스에서 정의된 추상메소드와 동일한 시그니쳐의 메소드를 가져야함. 이를 인터페이스의 구현(implement)객체라 하며, 구현객체를 생성하는 클래스를 구현 클래스라고 함. 구현클래스 public class 구현클래스 implements InterfaceClass{ //실체메소드선언;} 메소드제한 인터페이스의 모든 메소드는 public접근제한
  • 8. 6) 인터페이스(3) 1 상속 익명구현객체 자바소스파일작성없이 구현객체를 만들수있음 인터페이스 변수 = new 인터페이스(){ //인터페이스 선언된 추상메소드의 실제 메소드 선언;} 다중인터페이스 구현 클래스 객체는 다수의 인터페이스 타입으로 사용할 수 있다. 인터페이스A와 B가 메소드를 호출할 수 있으려면 두 인터페이스를 모두 구현되어야 하며, 다음과 같이 작성되어야함. Public class 구현클래스명 implements 인터페이스A, 인터페이스B{ //인터페이스A와 B에 선언된 추상메소드의 실체 메소드 선언} 인터페이스사용 RemoteControl rc;//rc는 인터페이스 rc=new TV(); rc=new Audio(); 추상메소드사용 RemoteControl rc;//rc는 인터페이스 rc=new TV(); rc.turnOff();//TV의 turnOff()실행 디폴트메소드사용 RemoteControl rc;//rc는 인터페이스 rc=new TV(); rc.setMute(true);
  • 9. 7) 인터페이스(4) 1 상속 정적메소드사용 RemoteControl.changeBattery(); 자동타입변환(예) 인터페이스 변수=구현객체 필드의다형성(예) Tire[] tires={ new Htire(), new Htire()}; 강제타입변환 상속관계의 부모/자식클래스간 자동타입변환과 같은 맥락으로, 구현클래스로 강제타입변환을 함으로써 구현클래스의 필드와 메소드를 사용할 수 있다. 구현클래스 변수=(구현클래스)인터페이스변수; 객체타입확인 (instanceof) if(vehicle instanceof Bus) {Bus bus=(bus)vehicle;} 상속 예시 (다중상속가능) public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2{;} 디폴트메소드 필요성 기존인터페이스 확장 및 기능 추가. 디폴트메소드를 가진 인터페이스 상속 방법 디폴트 메소드를 단순 상속. 디폴트 메소드를 재정의. 디폴트 메소드를 추상메소드로 재선언.
  • 11. 2 Memory II 1)RDA[Runtime Data Areas](1) 개요 JVM이 프로그램을 수행하기 위해 OS로부터 할당 받은 메모리 공간 구성(5가지) thread별로 존재 - PC Registers, JVM-Stacks, NativeMethod Stacks 모든 thread가 공유(동기화이슈) - Method Area, Heap PC Register Thread가 생성될때마다 생성. Thread가 어떤명령을 실행하게 될지를 기록. JVM-Stack의 Operand를 저장. Method Area 클래스 사용시에 클래스 저장. 클래스 변수(인스턴스변수)도 Method Area에 함께 생성. new연산자로 클래스생성 후 메소드 실행시에 클래스 저장. Type정보, Runtime Constant Pool, 필드정보, 메소드정보, 클래스 변수(static 변수) 저장
  • 12. 2 Memory II 2)RDA[Runtime Data Areas](2) Heap 인스턴스가 생성되는 공간. 객체를 동적 생성하면 인스턴스가 Heap에 할당 됨. 레퍼런스 변수는 Heap에 포인터가 저장됨. GC의 대상이 되는 영역. JVM-Stacks Thread제어를 위해 사용되는 공간. Thread마다 하나씩 생성됨. 단일 Thread마다 method가 호출될때 메모리 할당(push). Method가 종료되면 메모리 반환(pop). Method가 호출되면 method와 method정보가 stack에 적재. Method호출이 종료되면 stack point에서 제거됨. Method정보는 매개변수/지역변수/임시변수/어드레스 등을 포함. 각 스레드는 각각의 스택을 가지나, Heap은 공유. 때문에, Heap은thread-unsafe. Native Method Stacks 자바 외 언어에서 제공하는 method나 lib(DLL, conf등)파일을 저장. JNI를 통해 표준과 가까운 방식으로 구현 가능.
  • 13. 2 Memory II 3) 동적로딩 개요 java구동시 모든 코드가 JVM에 링크됨. 클래스는 참조되는 순간 동적으로 JVM에 링크되고 메모리에 로딩됨. ClassLoader 동적 클래스 로딩은 ClassLoader를 통해 이루어짐. 기본 클래스 로더는 java.lang.ClassLoader JVM이 구동되면, 부트스트랩 클래스 로더가 생성됨. 로드타임 동적 로딩 하나의 클래스를 로딩하는 과정에서 동적으로 필요한 클래스를 로딩. (load-time dynamic loading) 런타임 동적 로딩 클래스를 로딩할 때가 아닌 코드를 실행하는 순간에 클래스를 로딩. (run-time dynamic loading)
  • 14. 2 Memory II 4) 중첩클래스, 중첩인터페이스 개요 특정클래스와 관계를 맺는 관게클래스를 내부에 선언 장점 두 클래스의 멤버를 서로 쉽게접근, 외부에는 관계클래스를 감춰서 코드 복잡도를 낮춤. 인스턴스 멤버클래스 class A{ class B{ ; } } //A객체생성해야 사용가능한 B중첩클래스 정적 멤버클래스 class A{ static class B{ ; } } //A클래스로 바로 접근 할 수 있는 B 중첩 클래스 로컬클래스 class A{ void method() { class B ; } } //method()가 실행할때만 사용할 수 있는 B중첩 클래스 형태 멤버클래스 : A$B.class 로컬클래스 : A$1B.class 접근제한 인스턴스멤버클래스 - 바깥클래스 인스턴스 필드초기값/메소드생성:O 정적필드 초기값/정적메소드 객체생성 :X 바깥클래스의 모든메소드/필드접근 :O 정적멤버클래스 - 모든 필드 초기값/정적메소드 객체 생성 :O 바깥클래스 정적필드/메소드 접근 :O 인스턴스 필드/메소드 접근 :X 로컬클래스 - final의 매개변수와 로컬변수만 사용 바깥클래스참조얻기 중첩클래스 내부에서 바깥클래스참조는 바깥클래스.this.필드||메소드(); 중첩클래스 내부에서 중첩클래스 참조는 this.필드||메소드();
  • 15. 2 Memory II 5) 프로세스와 스레드(1) 프로세스 실행중인 프로그램,자원,스레드로 구성 쓰레드 프로세스 내에서 실제 작업 수행. 모든 프로세스는 하나 이상의 쓰레드를 가지고 있음. 싱글쓰레드 프로세스: 자원+쓰레드, 하나의 쓰레드가 2개이상 작업처리 멀티쓰레드 프로세스=자원+n개의 쓰레드, 쓰레드와 작업이 1:1 - 단순히 CPU만 사용하는 연산작읍은 작업전환에 시간이 걸리지 않는 싱글쓰레드가 효율적. - CPU이외의 자원을 사용하는 작업의 경우 멀티쓰레드 프로세스가 더 효율적 멀티쓰레딩 하나의 프로세스내에서 여러 쓰레드가 동시작업. CPU사용율 향상 효율적 자원사용 사용자 응답성 향상 작업분리 동기화/교착상태 이슈 각 쓰레드가 균등한 부하를 갖도록 지향해야 함. 쓰레드 그룹 서로 관련된 쓰레드를 그룹으로 묶어서 제어. 쓰레드 그룹에 다른 쓰레드 그룹 포함 가능. 자신이 속한 쓰레드 그룹과 하위 쓰레드 그룹은 변경가능. 그외 불가. 모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함. 쓰레드 그룹을 지정하지 않고 생성된 쓰레드는 메인쓰레드 그룹에포함 쓰레드를 쓰레드 그룹에 포함시키려면 thread 생성자 사용.
  • 16. 2 Memory II 6) 프로세스와 스레드(2) 데몬 쓰레드 non-daemon 쓰레드(일반쓰레드)의 작업을 돕는 보조역할. 일반 쓰레드가 종료되면 자동 종료. GC, 워드 프로세서의 자동저장, 자동 화면갱신등에 사용. 무한루프와 조건문으로 실행 후 대기하다가 특정 조건이 만족되면 작업수행하고 다시 대기하도록 작성됨. boolean isDaemon():쓰레드가 데몬인지 확인. void setDaemon(boolean on)스레드를 데몬쓰레드로 또는 사용자 쓰레드로 변경. 매개변수 가 true이면 데몬쓰레드로 변경. setDaemon()은 반드시 start()호출 전 실행되어야 함. 쓰레드 생명주기
  • 17. 2 Memory II 7) 프로세스와 스레드(3) 반환형 메소드 설명 void interrupt() sleep()이나 join()에 의해 일시정지 상태인 쓰레드를 실행 대기 상태로 만든다. 해당 쓰레드에서는 InterruptedException이 발생함 으로써 일시정지상태를 벗어나게 된다. void join() 지정된 시간동안 쓰레드가 실행되도록 한다. 지정된 시간이 지나거나 작업이 종료되면 join()을 호출한 쓰레드로 다시 돌아와 실행을 계속한다. void join(long millis) void join(long millis, int nanos) void resume() suspend()에 의해 일시정지상태에 있는 쓰레드를 실행대기상태로 만든다.
  • 18. 2 Memory II 8) 프로세스와 스레드(4) static void sleep(long millis) 지정된 시간(천분의 일초 단위)동안 쓰레드를 일시정지시킨다. 지정한 시간이 지나고 나면, 자동적으로 다시 실행대기상태가 된다.static void sleep(long millis, int nanos) void stop() 쓰레드를 즉시 종료시킨다. 교착상태(dead-lock)에 빠지기 쉽기 때문에 deprecated 되었다. void suspend() 쓰레드를 일시 정지시킨다. resume()을 호출하면 재개된다 static void void yield() 실행 중에 다른 쓰레드에게 양보(yield)하고 실행대기상태가 된다. 반환형 메소드 설명
  • 19. 2 Memory II 9) 프로세스와 스레드(5) 상태 설명 NEW 쓰레드가 생성되고 아직 start()가 호출되지 않은 상태 RUNNABLE 실행 중 또는 실행 가능한 상태 BLOCKED 동기화블럭에 의해서 일시정지된 상태 (LOCK이 풀릴 때 까지 기다리는 상태) WAITING, TIMED_ WAITING 쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시 정지상태, TIMED_WAITING은 일시정지시간이 지정된 경우를 의미 TERMINATED 쓰레드의 작업이 종료된 상태 wait(), notify() - 동기화의 효율을 높이기 위해 사용한다. - Object 클래스의 정의되어 있으므로, 모든 객체에서 호출이 가능하다. - 동기화 블록내에서만 사용할 수 있다. - wait() : 객체의 lock을 풀고 해당 객체의 쓰레드를 대기상태로 둔다. - notify() : 대기중인 쓰레드 중의 하나를 깨운다. - notifyAll() : 대기중인 모든 쓰레드를 깨운다. 호출된 객체의 대기 중인 쓰레드만 해당 된다. 출처 http://gangzzang.tistory.com/m/post/75
  • 21. 3 Exception 1) 예외 종류 일반(Exception) / 실행예외(Runtime Exception) 예외클래스 java.lang.Exception클래스를 상속받는 모든 클래스(java.lang.[ClassNotFound|Interrupted|Runt ime|...]Exception) 실행예외 실행예외는 컴파일러가 체크하지 않음. 개발자가 예외처리코드를 삽입해서 처리. NullPointer Exception java.lang.NullPointerException, 객체참조가 없는(null값을 갖는) 상태의 참조변수로 객체 접근 연산자를(.)을 사용시 발생 ArrayIndexOut BoundsException java.lang.ArrayIndexOutOfBoundsException, 배열 인덱스 범위 초과 사용시 발생 NumberFromat Exception java.lang.NumberFormatException, 문자열 등의 데이터를 숫자로 변경할때 발생. Integet.parseInt(String s); Double.parseDouble(String s)를 사용해서 문자열을 정수와 실수로 변환하여 오류 수정. ClassCastException 타입변환(Casting)은 상/하위 클래스 또는 구현클래스/인터페이스 간에 발생. 이 관계 외의 경 우에서 캐스팅 시 발생.
  • 22. 3 Exception 2) 예외처리코드 형태 try-catch-finally 작성방법 try{ 예외발생코드; }catch ( 예외클래스 e){ 예외처리; }finally{ 항상 실행되는 코드; }
  • 23. 3 Exception 3) 예외종류별 처리코드 다중catch try{;}catch(예외1 e){;}catch(예외2 e){;}finally{;} catch순서 하위 예외 클래스부터 상위 예외 클래스 순서로 작성 멀티catch catch(예외1 e || 예외2 e){;} 자동 리소스 닫기 try-with-resources사용. close() 메소드로 안전하게 리소스를 종료 try{;}catch(예외 e){;} finally{ if(fis!=null){ try{ fis.close(); }catch(예외 e){ ; } } } 예외 떠넘기기 예외발생시 메소드를 호출한 곳으로 예외를 넘김. public int method2() throws ClassNotFoundException{ ; }//catch문에서처리 사용자정의 예외/예외발생 사용자 정의 예외 클래스 선언 ->예외 발생 사용자정의 예외클래스선언 예시 public class BalanceInsufficientException extends Exception{ public BalanceInsufficientException(){} public BalanceInsufficientException(String msg){ super(msg);} } 예외발생 throw new XXXException(); throw new XXXException("msg"); 예외정보얻기 getMessage(), printStackTrace()를 이용. catch(예외 e){ String msg = e.getMessage(); e.printStackTrace();}
  • 25. 4 Wrapper Class 1) Wrapper(포장)클래스(1) 개요 기본타입의 값을 갖는 객체를 생성(기본타입값을 내부에 두고 포장) 박싱/언박싱 기본타입값을 포장객체로 만드는것을 박싱, 그 역을 언박싱이라고함. 기본타입 포장클래스 언박싱메소드 byte Byte num=obj.byteValue(); char Character ch=obj.charValue(); short Short num=obj.shortValue(); int Integet num=obj.intValue(); long Long num=obj.longValue(); float Float num=obj.floatValue(); double Double num=obj.doubleValue(); boolean Boolean bool=obj.booleanValue(); 자동박싱 포장클래스타입에 기본값 대입될 경우 발생. Integer o=100; 자동언박싱 기본타입에 포장객체가 대입될 때 발생. int val1=Integer o=new Integer(1);
  • 26. 4 Wrapper Class 2) Wrapper(포장)클래스(2) 기본타입 문자열을 기본타입 값으로 변환하는 메소드 byte num=Byte.parseByte("10"); short num=Short.parseShort("10"); int num=Integer.parseInteger("10"); long num=Long.parseLong("10"); float num=Float.parseFloat("10.0F"); double num=Double.parseDouble("10.0"); boolean bool=Boolean.parseBoolean("true"); 포장값 비교 언박싱하여 비교하거나 equals()메소드를 사용하면 내부값을 비교하도록 오버라이딩 되어있음.