TIL 04 - JAVA

eyan31·2022년 6월 16일
0

TIL

목록 보기
4/25
post-thumbnail

TIL | 06.15~06.16의 기록
이제 슬슬 내용이 복잡해지고 머리가 안돌아가기 시작...

예외 (Exception)

사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류, 프로그램 코드로 해결할 수 있는 것.
예외는 일반 예외와 실행 예외(Runtime Exception)으로 나눠진다. 일반 예외는 코드를 작성하면서 예외 발생을 확인할 수 있지만, 실행 예외는 자바 컴파일러가 체크를 하지 않기 때문에 코드를 실행하면서 예외를 확인할 수 있다.

예외 처리 방법에는 3가지가 있다.

  • try catch 이용
try {
	예외가 발생가능한 코드 (예외 발생가능성이 없는 코드도 함께 작성 가능)
}catch(예외클래스 e) { 예외 갯수만큼 작성 가능
	예외가 발생했을 때 처리하는 곳
}catch(Exception e) {
	예외의 종류는 다르지만 하나의 실행문을 사용하려면 Exception으로 묶으면 됨
    Exception은 모든 예외클래스들의 상위 클래스이기 때문에 가능
    단, 제일 마지막에 작성해야 한다
}finally {
	예외 발생 여부와 관련없이 항상 실행
}
  • 메소드(생성자 메소드, 메소드) 이용
    throws 키워드를 사용하여 예외 처리
public MethodException() throws InputMismatchException, ArithmeticException {
	실행문~
}
  • 예외클래스 만들기
    예외클래스를 생성하기 위해서는 Exception을 상속받아 만들 수 있다.
    예외클래스 만들기
public class MyException extends Exception {
	public MyException() {
    	super("1~10사이의 값을 벗어났습니다.')
		//상위클래스인 Exception의 생성자메소드를 호출하여 에러메세지 셋팅
}

예외클래스 사용

public class MyExceptionTest {
	public MyExceptionTest() {
    	Scanner sc = new Scanner(System.in);
        try{
        	int n = scan.nextInt();
            if(n<1 || n>10) {//입력값 1~10이 아니면 MyException 예외 발생
            	throw new Myexception(); // throw->강제로 예외발생시키는 키워드
            }
        }catch(Myexception me) {
        	System.out.println(me.getMessage());
        }

Wrapper 클래스

기본 데이터 타입을 객체로 만들어주는 기능을 갖는 클래스들이다. 기본 데이터 타입에 대응되는 클래스들이 있다.
=> Byte, Short, Integer, Long, Float, Double, Character, Boolean
오토박싱 : 기본 데이터 타입이 자동으로 객체화되는것
Integer obj = 500;
오토언박싱 : 기본 데이터 타입에 포장 객체가 대입되는 경우

Integer obj = new Integer(200);
int value1 = obj;

문자열을 숫자로 변경하기

String data = "1234";
int i = Integer.parseInt(data); //int로 반환
Integer i2 = Integer.valueOf(data); //Integer로 반환
int i3 = Integer.valeuOf(data);//Integer를 int로 반환 : 오토언박싱

Format 클래스

원하는 형식으로 출력 가능하게 해주는 클래스
DecimalFormat(String pattern) : 숫자 형식 클래스

int won = 123456; //->123,456원으로 출력하고 싶다면
DecimalFormat fmt = new DecimalFormat("#,###원");
String wonResult = fmt.format(won);
System.out.println(wonResult);

SimpleDateFormat : 날짜 형식 클래스

y : 년 / M : 월 / H : 시(0~23) / h : 시(1~12) / d : 일 / E : 요일 / a : 오전,오후 / m : 분 / s : 초 / ....
2022-06-16(목) 10:50:23 오후 -> yyyy-MM-dd(E) hh:mm:ss a

NumberFormat : 문자 데이터를 숫자로 바꾸기

NumberFormat nf = NumberFormat.getInstance();
Number n = nf.parse("123,445원"); //parse는 Number값으로 변환됨
int result = n.intValue();

MessageFormat : 변수의 값을 이용하여 문자열로 만들어준다

String name = "홍길동"; String tel = "010-1234-5678"; String addr = "서울시";
String msg = MessageFormat.format("이름 : {0} \n연락처 : {1} \n주소: {2}", name, tel, addr);
System.out.println(msg);

컬렉션 프레임워크

자바로 만들어진 하나의 패키지화된 프로그램이다. 자료구조, 데이터, 객체를 저장해둔 집합이다.

  • List 인터페이스 : 저장 순서를 유지(index를 가진다), 중복 허용
  1. Vector 클래스 : 동기화 보장
List<String> list = new Vector<String>(); //객체 생성
list.add("홍길동");
list.add("고길동);
list.add(1,"김길동"); //index [1]에 김길동 추가. 원래 인덱스는 하나씩 뒤로 밀린다
  1. ArrayList : 동기화 보장 안함
    Vector와 사용법 동일
    Getter/Setter : 캡슐화 되어있는 변수들에 대해 외부클래스에서 접근을 허용하는 메소드
    Setter : 외부값을 내부에 받기
    Getter : 값을 외부로 내보내기

  2. Stack : Vector를 상속받는다
    한쪽으로 객체를 담거나 꺼낸다. (FILO, LIFO)
    객체를 꺼내면 Stack영역에서 지워진다.

  3. LinkedList : 순서를 유지한다
    Queue : 먼저 입력된 객체가 먼저 출력된다.
    Deque : 양쪽에서 객체를 입력, 출력할 수 있다.

  • Set 인터페이스 ; 저장 순서 유지 안함, 중복 허용 안함
  1. HashSet
HashSet<Integer> hs = new HashSet<Integer>();
Iterator<Integer> i = hs.iterator() // iterator라는 인터페이스를 통해 객체를 가져온다
  1. TreeSet : 오름차순 정렬
    HashSet과 사용방법 동일
  • Map 인터페이스 : 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조, 키는 중복되면 안됨
  1. Hashtable : 동기화 보장
Hashtable<K키타입,V값타입> ht = new Hashtable<키타입,값타입>();
  1. HashMap : 동기화 보장 안함
    Hashtable과 사용법 동일
  2. TreeMap : 키(key) 정렬
    키와 값이 저장된 Map.Entry를 저장한다. 부모 키값과 비교하여 키 값이 낮은 것은 왼쪽 자식 노드에 저장하고 키 값이 높은 것은 오른쪽 자식 노드에 저장한다.
profile
터벅터벅 개발자 지망생의 하루

0개의 댓글