추상메소드를 하나라도 가지고 있으면 -> 추상 클래스
일반 클래스에 abstract 만 붙여도 추상 클래스로 인식하긴 함
super <-부모꺼 자식이 가져온 거
ArrayList<부모> list = new ArrayList<부모>();
해서 자식 클래스 넣기 가능
예외
try - catch
try - catch - catch... 캐치블럭 여러개도 가능(Exception으로 통일도 가능)
try - catch - finally
ㄴfinally 는 에러 나든, 안 나든
try catch가 성립 하든 안 하든 무조건 실행되는 블럭
Set(HashSet)
순서X 중복X
set.contains() <-괄호 안에 있는 게 포함되어 있나요? true or false
set.clear() <-전부 지워주세요
List / Set 은 모두 Collection에 포함되어 있는 거라서
명령어 다 같아용!!!
Set(TreeSet)
순서X 중복X
순서는 상관 없으나 자동 정렬 해줌
명령어 다 같아요~ Collection에 포함 되어 있음!
Iterator
Collection(데이터 집합) 안 요소들을 열거하기 위한
표준을 제공하는 인터페이스
hasNext()
다음 요소가 있는지 true or false(boolean)
요소가 존재할 때까지 next() 수행(다음꺼 보여줘!)
while(it.hasNext()) {
System.out.println(it.next())
}
이런 식으로 사용 ! !
다음주
io / 쓰레드 /네트워크
io 메모장으로 이용하긴 하는데
DB있는데 굳이??? 활용도 떨어짐
시스템 관리하는 사람들이 많이 씀 우린 웹이라 잘 안 씀
쓰레드, 네트워크도 마찬가지~
간단하게만 볼 거예요
Map은 공부해오세용
io도 기본이에용
SQL문 배움
DB 한 다음에 자바 넘어와서
JDBC 배울 거예용
DTO == VO
Service / DAO(상속인터페이스) DAOINP (상속받는거)
자바스크립트, Jquery
--------------------예습
<Generics> - 객체를 다루는 메서드,컬렉션 클래스에 컴파일시 타입 체크
객체 타입을 컴파일 시 체크하여 객체 타입 안정성 높임, 형변환 번거로움 줄어듬
ArrayList<Student> sList = new ArrayList<Student>(); <---- <> 가 제네릭
sList.add(new Student()); //OK
sList.add(new Tv()); //Error
저장된 객체 꺼낼 때, 형변환 할 필요가 없어 편리함
장점
1 타입 안정성 제공
2 타입 체크 / 형변환 할 필요가 없어 코드 간결해짐
<타입 변수> - ' < > ' 안에 있는 T <T>
Map<K, V> - key타입변수, value 타입 변수 //여러개인 경우 , 로 나열
ArrayList같이 제네릭 클래스를 생성할 땐, 실제 타입 지정해줘야 함
ArrayList<Tv> tvList = new ArrayList<Tv>(); //Tv타입만 담을 수 있다
<용어> class B <T> {}
Box<T> 제네릭 클래스, 'T의 Box' or 'T Box'라고 읽음
T 타입 변수, 타입 매개변수
Box 원시 타입(raw Type)
ArrayList<Tv> list = new ArrayList<Tv>();
ㄴ참조변수 제네릭타입 ㄴ 생성자 제네릭 타입 //반드시 일치해야함
ArrayList<Product> list = new ArrayList<Product>();
list.add(new Tv()); //Product의 자손이라 OK
list.add(new Audio()); //Product의 자손이라 OK
- 단, 저장 객체를 꺼낼 땐 형변환 필요함
Tv t = (Tv)list.get(0); <-Product의 자식 객체라 형변환 필요
Iterator<E>
Iterator<Student> it = list.iterator(); //Student타입 리스트만 가능
HashMap<K,V> - K,V도 전부 참조형 타입
HashMap<String, Student> map = new HashMap<String, Student>();
map.put("자바왕",new Student("자바왕",1,1,100)); //각각 맞는 타입으로 저장
<제한된 제네릭 클래스> - 타입 종류 제한?
제네릭 타입에 extends 사용하면, 특정 타입의 자손들만 대입 가능(인터페이스도 동일)
class FruitBox<T extends Fruit> //Fruit타입의 자손들만 타입 지정 가능
<T extends Fruit & Eatable> // & 기호 붙이면 인터페이스도 OK
- static 멤버에 타입 변수 붙이는 건 불가
<와일드 카드> - 다형성
<? extends T> T와 그 자손들만 가능(상한제한) - 얘를 마니 씀
<? super T> T와 그 조상들만 가능(하한 제한)
<?> 제한X 모든 타입 가능(? extends Object와 동일)
ArrayList<? extends Product> list = new ArrayList<Tv>();
ㄴ Product 타입과 그 자손들만 가능
<제네릭 메서드> 메서드 선언부에 제네릭 타입이 선언 된 메서드
static <T> void sort(List <T> list, Comparator<? super T> c)
앞 T와 뒤 T는 별개
클래스에도 정의 가능함
static 멤버는 타입 매개변수 사용 불가하지만
메서드가 제네릭 타입이면 OK
<입출력 I/O와 스트림> Input 입력 Output 출력
스트림(Stream) 두 대상을 연결하고 데이터를 전송해주는 "연결 통로"
입력스트림
Java <--------------------- 파일(test.txt)
int ch=in.read(); Hello Hello
out.write("world") dlrow
------------------------->
출력스트림
FIFO (First In First Out) 이라고 보면 됨 Queue와 같음
<바이트 기반 스트림> InputStream OutputStream / 바이트 단위로 데이터 전송
입력
File(InputStream,Out....) 파일 입출력
ByteArray(InputStream,Out...) 메모리(byte배열)
Piped(InputStream,Output...) 프로세스(프로세스간의 통신)
Audio(InputStream...Out..) 오디오 장치
InputStream 읽기
abstract int read() : 1byte를 읽어온다(0~255) 더 이상 읽을 게 없으면 -1 반환
int read(byte[] b) : b 크기만큼 바이트를 읽어서 채우고, 읽은 바이트의 "수"를 반환(배열 저장값)
int read(byte[] b, int off, int len) : b의 인덱스(off)부터 len 개 까지 읽는다
ㄴb[10], 3, 5 -> b의 index 3부터 5개만 읽음 [3][4][5][6][7]
close() : 필수!!!스트림 닫고 자원 반환
OutputStream 출력
abstract void write(int b) : 1바이트를 출력(하나씩 출력)
void write(byte[] b) : b의 모든 바이트 출력(배열 저장 내용 전부)
void write(byte[] b,int off,int len) : 배열 b의 인덱스off부터 len개의 바이트 출력
void flush : 버퍼 잔류 모든 바이트 출력
close() : 필수!!!스트림 닫고 자원 반환
<문자 기반 스트림> Reader입력 Writer 출력
char는 2byte라서, 문자 기반 스트림을 이용해야 함
InputStream -> Reader
OutputStream -> Writer
<문자 읽기> Reader
int read() : 1개의 문자 읽고 리턴(더 이상 읽을 문자 없으면 -1)
int read(char[] c) : 문자를 읽어 한자씩 배열에 저장하고 읽은 문자 수 리턴
int read(char[] c,int off, int len) : c의 [off]에서 부터 len개 만큼 읽기
void close() : 입력 스트림 닫고 사용 메모리 해제
<문자 출력> Writer
void write(int c) : 매개값인 한 문자 출력
void write(char[] c) : 배열의 모든 문자 출력
void write(char[] c,int off,int len) 배열c의 [off]부터 len개의 문자 출력
void write(String str) 매개값 문자열 출력
flush() : 버퍼 잔류 문자 출력 비우기
close() : 출력 스트림 닫고 메모리 해제
'국비 학원 가서 개발새발' 카테고리의 다른 글
국비학원 15일차) ORACLE 시작!! (0) | 2022.10.19 |
---|---|
국비학원 13일차) HashMap, Iterator, IO (0) | 2022.10.17 |
국비학원 11일차) ArrayList 예습)예외,컬렉션,HashSet,Map 등 (1) | 2022.10.13 |
국비학원 10일차) 추상클래스, 인터페이스 // 예습:Collection, List, Stack, Queue (0) | 2022.10.12 |
예습)예외 처리(try-catch) (0) | 2022.10.10 |