Java_07

Java_07

#에러(Error)

프로그래머가 고칠 수 없는 오류 (메모리 부족)

#예외(Exception)

개발자의 의도와는 다른 방식으로 사용자가 사용을 했을 때 발생하는 오류

예외가 발생하면 프로그램이 강제종료되고 데이터 손실이 발생할 수 있으며

사용자 경험(UX)이 나빠질 수 있다.

#예외 처리(Exception Handling)

예외가 발생하더라도 프로그램이 강제종료 되지 않도록 함

#try~catch문

try { 예외가 발생할 수 있는 코드 } catch (예외명 예외객체명) { //한개이상 예외가 발생 했을 때 실행할 코드 } catch (예외명 예외객체명) { } ... { } catch (Exception e) { 모든 예외 포함 } finally { //생략가능 예외랑 상관없이 실행하는 코드 (주로 파일닫을때 자주 사용) 예외로 강제종료 되더라도 실행되는 코드 }

+)예외명이 Exception일 경우 모든 예외를 포함함

+)예외객체명.printStackTrace(); //요류사항 출력

+)예외객체명.getMessage(); //오류부연설명 String으로 return

#예외종류

-컴파일예외

컴파일 시 발생하는 예외 ex) Thread.sleep()

-런타임예외

프로그램 실행 중에 발생하는 예외

#throws 예외 던지기

현재 예외를 처리하지 않고 해당 코드를 사용하는 사람에게

예외를 처리하도록 하는 문법

여러개의 예외를 줄 수 있음

메소드() throws 예외명, 예외명...{ 실행코드 }

#throw 예외 발생시키기

throw new 예외클래스생성자("세부설명가능");

해당 예외가 발생

----------------------------

##컬렉션 프레임워크(Collection Framework)

#Collection

List

값의 수정, 삭제, 추가가 자유로움

순서가 있고, 값의 중복을 허용

ArrayList, LinkedList, Vector...

Set

순서가 없고, 값의 중복을 허용하지않음

속도가 빠르다

HashSet, TreeSet

Map

key와 value가 한쌍으로 짝지어진 형태로 저장

Entry 객체

HashMap, TreeMap

##ArrayList

#선언

ArrayList<데이터타입> 리스트명 = new ArrayList<데이터타입>(); ArrayList<데이터타입> 리스트명 = new ArrayList<>(); ArrayList 리스트명 = new ArrayList(); <- Object타입으로 자동설정

데이터타입에는 class타입을 넣어야함

#값추가

리스트.add(값); //마지막위치에 값추가

리스트.add(위치, 값); //해당위치에 값추가

#값가져오기

리스트.get(위치) //해당위치의 값 return

#리스트크기

리스트.size() //리스트 크기 return

#리스트 비었는지 확인

리스트.isEmpty() //비어있으면 true return

#리스트 값 삭제

리스트.remove(위치); //해당위치의 값 삭제하고 그 값 return

리스트.remove(값); //해당값 삭제(제일 처음나오는값) 삭제되면 true return

#리스트 값 변경

리스트.set(위치, 값); //해당위치를 값으로 변경, 바뀌기 전 값 return

#리스트 값 위치

리스트.indexOf(값) //해당 값의 위치를 리턴

+)값이 추가되거나 삭제될 때 리스트를 계속 새로만드는 형식이여서 메모리를 많이 사용한다.

#<> 제너릭

클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법

사용자가 사용할 타입으로 변경

##HashSet

#선언

HashSet<데이터타입> 리스트명 = new HashSet<데이터타입>(); HashSet<데이터타입> 리스트명 = new HashSet<>(); HashSet 리스트명 = new HashSet(); <- Object타입으로 자동설정

#값추가

리스트.add(값);

#값제거

리스트.remove(값); //값을 제거하고 성공유무를 boolean으로 return

#값 확인

리스트.contains(값) //값이 있는지 확인하고 있으면 true return

#리스트 크기

리스트.size() //크기를 return

#리스트 비었는지 확인

리스트.isEmpty() //비었으면 true

#for문으로 가져오기

for(데이터타입 i : 리스트명){코드}

#순서를 부여하는 메소드

Iterator<데이터타입> iter명 = 리스트.Iterator();

#값 가져오기(거의랜덤으로가져옴)

iter명.next() //한개 가져와서 return

#가져올 값이 있는지 확인

iter명.hasNext() //가져올 값이 있으면 true

##HashMap

#선언

HashMap 리스트명 = new HashMap<>();

#값 추가&수정

리스트.put(key값, value값);

이미 있는 key의 경우 수정

#값 삭제

리스트.remove(key값)

#리스트 크기

리스트.size()

#리스트 비었는지 확인

리스트.isEmpty();

#값 가져오기

리스트.get(key값) //value값 return

#key유무확인

리스트.containsKey(key값) //있으면 true

#value유무확인

리스트.containsValue(value값) //있으면 true

#set으로 만듬

리스트.keySet() //key만 set로 만들어서 return

리스트.entrySet() //Set>형태의 set으로 만들어서 return

Set> set명 = 리스트.entrySet();

#entrySet에서 값 가져오기

set값.getKey() //key값 가져옴

set값.getValue() //value가져옴

+)set값은 for(Entry i : set명){코드}의 i로 가져올 수 있음

#Entry객체

key와 value로 이루어진 한 쌍의 객체

getKey(), getValue()

from http://playpizza.tistory.com/50 by ccl(A) rewrite - 2021-12-20 15:27:17