728x90

<Generic>

: 제네릭은 동적으로 타입을 결정하지 않고 컴파일 시 타입이 결정되므로 보다 안전한 프로그래밍이 가능하다

: 실행 중에 타입 충돌 문제를 방지할 수 있다

: 프로그램 개발 시 타입 캐스팅 절차가 필요 없어지고 ClassCastException을 방지 할 수 있다

: 클래스 생성시 타입을 명시해 준다.

: <T> <E> <K> <V> 4개의 문자로 표시한다

 

<T> Type(데이터형) -> 아직 안정했을때 실행은 막 가능하게 편하게 하려고 컴파일시에만...

: 실행시 데이터 타입을 설정한다.

: ? 를 사용하면 Object로 인식한다.

: ? 를 사용하면 반드시 생성자를 통해서 데이터를 입력받는다.(세터 불가)

<E> Element(요소, 항목)

<K> Key

<V> Value

 

cf) 제네릭: 물컵! / 용도변경 자유자재 가능

cf) 기본형은 못들어감(int 이런 기본형 불가 / 레퍼클래스화 시킨거 적용 ->Integer 이렇게 들어가야 함.

cf) GenericTest<String> aa = new GenericTest<String>(); 

=> ?: 뒤에 String 제너릭을 걸었지만 ?에 의해 모두 오브젝트화 된다. 이 경우 세터 사용 불가 ,반드시 생성자를 통해서만 전달된다.

cf) 생성자와 세터는 하는일이 같다 다만 생성자는 new 할 때 한번만 수행


cf) 객체형 : Integer / 기본형 : int => 여기서 캐스팅을 int로 해도 자동으로 객체형 처리해줌 AutoBoxing =객체화

기본화 = AutoUnBoxing

jdk5.0 부터 오토박싱이 생김 그 이전에는 객체형은 객체형으로 기본형은 기본형으로 필수였다

 


웹이 무너지지 않은 한 자바는 안사라진다

erp 기업전산화 - c#(MS-SQL)

keras- 파이썬

웹-java

 

cf) 상속-다형성 : 결합도 낮추기 위해!!

부모= 자식

자식 = (자식)부모  <- 매번 캐스팅하는게 번거롭다! => 제네릭을 걸면 해소된다!!!?

 


<Collection> (java.util)

: 객체를 담아주는 저장 창고

: 객체 타입에 상관없이 저장 가능

: 크기 조절 가능

: 주머니, 비닐봉다리같은! 크기도 자유자재로 늘어났다가 줄어들었다가

 

# Enumeration

# Iterator

 

cf) 배열은 크기조절이 불가능함

cf) 제네릭은 한가지만 담을 수 있음

cf) 큐 , 스택, 어레이리스트 등 여기에 다 들어있음

부모는 자식꺼를 마음대로 쓸 수 없다 지금상태로는 사용 불가

===> Iterator (인터페이스임)사용 (나영석 막대기, 지정자)


오버라이딩할 메소드가 너무 많다 -> 반드시 대신해주는 클래스가 존재하고 있다~~~~

 


<Collection - ArrayList>

 

List 인터페이스의 대표적 구현 클래스

- 구현방법 : List<E> list = new ArrayList<E>();

- List라는 인터페이스한테 상속 받음. API에서 확인가능

 

 

 -> 저장할 객체 타입을 E 타입 파라미터(<E>) 자리에 표기하고 기본 생성자를 호출

 

- 특정 인덱스의 객체 제거시 제거한 인덱스 뒤부터 모두 앞으로 1씩 당겨짐

- 인덱스번호 따로 안쓰면 순서대로 추가

- 객체 추가: list.add(" "); , 리스트명.add(인덱스명, " "); 

검색: list.get(인덱스);

삭제: list.remove(인덱스);

 

- 리스트는 length대신 size 이용!

 

<컬랙션 성적 문제 - ArrayList> 

원리

- insert: -> list : new 를 새로 한다!!~!!!, 리스트가 주소를 찾는다, 객체가 가리키는 화살표는 계속 바뀐다 , 따라서 객체 이름이 바뀔 필요는 없다

 

- delete: 주의할 점!! -> 리스트는 삭제하면 인덱스 번호가 바뀐다~!!!! 

 => Iterator 이용 꺼내놓은 버퍼 메모리에 남아있는 내용을 지운다

-> 총점 기준으로 하면 에러난다 -> sort 함수가 객체자체를 움직이게 해준다

이걸 implements 하는 클래스들은 함수 CompareTo를 쓸 수있는것이다~~~

 

+ 전체 출력시 리스트 추가 설명

 

- rs에 담긴 DTO를 가지고 있을 수 없으니 list에 담는다!!

 

-어레이 리스트의 부모는 리스트라서 어레이리스트 써도 된다!!

 

-리스트는 new가 안되기 때문에 Array리스트 이용하는 것!!

ex) List<MemberDTO> list = new ArrayList<MemberDTO>();


<자바가 제공하는 어노테이션>

1. @Override

2. @Deprecated

3. @SuppressWarnings(옵션) <- 억지로 시키는 것 cf) 제네릭은 달래는 것

옵션

1. all : 모든 경고를 억제

2. cast : 캐스트 연산자 관련 경고 억제

3. dep-ann : 사용하지 말아야 할 주석 관련 경고 억제

4. deprecation : 사용하지 말아야 할 메소드 관련 경고 억제

5. fallthrough : switch문에서의 break 누락 관련 경고 억제

6. finally : 반환하지 않는 finally 블럭 관련 경고 억제

7. null : null 분석 관련 경고 억제

8. rawtypes : 제네릭을 사용하는 클래스 매개변수가 불특정일 때의 경고 억제

9. unchecked : 검증되지 않은 연산자 관련 경고 억제

10. unused : 사용하지 않는 코드 관련 경고 억제


<계산기 마지막 숙제 원리 설명>

cf) 크기계산 

배열 length

문자열 length()

리스트 size()


Collection

Set

Map : //앞에가 키 뒤에가 값이라 많이 씀 이름x

Stack

Queue

이터레이터는 자체함수가 없을 때, 삭제시에 써야함~!

728x90

+ Recent posts