오류(Error)의 종류
1. 컴파일 에러 : 소스상의 문법 에러
2. 런타임 에러 : 입력값이 틀렸거나 배열 인덱스의 범위가 벗어난 경우 발생하는 오류들
3. 논리 에러 : 개발자의 의도대로 작동X
4. 시스템 에러 : 컴퓨터의 오작동
오류와 예외
Error(오류) : 해결 불가능
Exception(예외) : 예외처리를 통해 해결 가능한 오류
- Checked Exception → IOException : 개발자가 반드시 처리해야하는 오류
- Unchecked Exception → RuntimeException
예외처리
1. throws
메소드를 최초 호출한 곳으로 예외던지기
2. try~catch
try{
//예외처리할 구문
}catch(처리할예외클래스명 참조형변수명){
//예외클래스 처리 구문
}finally{
//반드시 실행해야 하는 구문
}
try {
System.out.println(100/0);
}catch(ArithmeticException e) {
e.printStaceTrace();
}
3. 멀티 catch
try{
//예외처리 해야하는 구문
}catch(예외클래스명2 e){
}catch(예외클래스명1 e){
}
4. try~with~resource
try(반드시 close 처리 해야하는 객체에 대한 생성 구문) {
//예외처리 해야하는 구문
}catch(예외클래스명 e) {
//예외클래스 처리 구문
}finally{
//반드시 실행해야 하는 구문
}
입출력이란?
컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 의미
스트림이란?
입출력 장치에서 데이터를 읽고 쓰기 위하여 자바에서 제공하는 class
단방향 통신으로 입출력을 동시에 수행하려면 2개의 스트림이 필요함
방향에 따른 분류
- 데이터가 들어옴 : InputStream, Reader
- 데이터가 나감 : OutputStream, Writer
데이터 종류에 따른 분류
- 바이트 단위로 처리 : InputStream, OutputStream
- 문자 단위로 처리 : Reader, Writer
객체 직렬화(Serializable)란?
- 직렬화 : Heap에 위치한 객체를 출력 가능한 상태로 만드는 작업
- 역직렬화 : 직렬화된 객체를 다시 Heap에 넣기 위한 작업
- 직렬화의 대상은 객체의 Attribute의 값. (메소드는 그저 주소값만 필요할뿐)
- 객체를 IO하기 위해서는 필터스트림인 ObjectInputStream과 ObjectOutputStream이 필요
- 직렬화는 ObjectOutputStream
- 역직렬화는 ObjectInputStream
- 직렬화 대상객체는 java.io.Serializable를 implements한 클래스 객체여야 한다.
public class Member implements Serializable{
// 컴파일시 JVM이 자동으로 serialVirsionUID 정적 필드를 추가(컴파일 할 때마다 변경됨)해 주어
// 별도로 작성을 하지 않아도 오류는 나지 않음
// 하지만 자동 생성시 역직렬화 과정에서 예상하지 못한
// InvalidClassException을 유발할 수 있기 때문에 명시를 권장
static final long serialVersionUID = 1L;
Collection
자료구조를 담당하는 프레임워크
배열의 문제점
1. 크기 변경 X
2. 기록된 데이터 중간 위치에 데이터 추가/삭제가 불편
3. 한 타입의 데이터만 저장 가능
컬렉션의 장점
1. 저장 크기 제약 X
2. 데이터의 추가/삭제/정렬이 간단함
3. 여러 타입의 데이터 저장 가능
Collection
- List 계열 : 순차나열, 인덱스로 관리, 중복O
- ArrayList
- LinkedList : 객체의 추가/삭제가 많을 때 사용
- Set 계열 : 순서X, 중복X
- HashSet : 순서X
- LinkedHashSet : 순서유지
- TreeSet : 순서유지, 오름차순
Map 계열
Key와 Value로 구성, Key는 중복X(Set속성), Vaule는 중복O(List속성)
- HashMap
- TreeMap
- Properties : Key와 Vaule를 String타입으로 제한한 Map컬렉션으로 .properties파일을 읽어들일때 사용
(프로퍼티 파일은 키와 값이 '='기호로 연결된 텍스트 파일로 유지보수 편리함)
Generics
컬렉션 클래스를 이용해 객체를 저장할 때, 저장할 객체(클래스타입)를 제한하는 기능
이점?
1. 컴파일시 에러 방지
2. 객체 사용시 객체의 종류에 따라 매번 형변환할 필요X
표현식
클래스명<클래스타입> 래퍼런스 = new 생성자<>();
ArrayList bookList = new ArrayList<>();
'프로그래밍 > JAVA' 카테고리의 다른 글
04.24(서버와 클라이언트 / TCP 소켓 프로그래밍 순서) (0) | 2020.04.24 |
---|---|
04.23(스레드) (0) | 2020.04.23 |
04.21(IO 예제로 정리하기) (0) | 2020.04.21 |
04.20(URL예제 - 웹 상의 이미지 파일 다운로드) (0) | 2020.04.20 |
04.19(SimpleDateFormat 패턴) (0) | 2020.04.19 |