TIL | 06.15~06.16의 기록
이제 슬슬 내용이 복잡해지고 머리가 안돌아가기 시작...
사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류, 프로그램 코드로 해결할 수 있는 것.
예외는 일반 예외와 실행 예외(Runtime Exception)으로 나눠진다. 일반 예외는 코드를 작성하면서 예외 발생을 확인할 수 있지만, 실행 예외는 자바 컴파일러가 체크를 하지 않기 때문에 코드를 실행하면서 예외를 확인할 수 있다.
예외 처리 방법에는 3가지가 있다.
try catch
이용try {
예외가 발생가능한 코드 (예외 발생가능성이 없는 코드도 함께 작성 가능)
}catch(예외클래스 e) { 예외 갯수만큼 작성 가능
예외가 발생했을 때 처리하는 곳
}catch(Exception e) {
예외의 종류는 다르지만 하나의 실행문을 사용하려면 Exception으로 묶으면 됨
Exception은 모든 예외클래스들의 상위 클래스이기 때문에 가능
단, 제일 마지막에 작성해야 한다
}finally {
예외 발생 여부와 관련없이 항상 실행
}
throws
키워드를 사용하여 예외 처리public MethodException() throws InputMismatchException, ArithmeticException {
실행문~
}
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());
}
기본 데이터 타입을 객체로 만들어주는 기능을 갖는 클래스들이다. 기본 데이터 타입에 대응되는 클래스들이 있다.
=> 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로 반환 : 오토언박싱
원하는 형식으로 출력 가능하게 해주는 클래스
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<String> list = new Vector<String>(); //객체 생성
list.add("홍길동");
list.add("고길동);
list.add(1,"김길동"); //index [1]에 김길동 추가. 원래 인덱스는 하나씩 뒤로 밀린다
ArrayList : 동기화 보장 안함
Vector와 사용법 동일
Getter/Setter : 캡슐화 되어있는 변수들에 대해 외부클래스에서 접근을 허용하는 메소드
Setter : 외부값을 내부에 받기
Getter : 값을 외부로 내보내기
Stack : Vector를 상속받는다
한쪽으로 객체를 담거나 꺼낸다. (FILO, LIFO)
객체를 꺼내면 Stack영역에서 지워진다.
LinkedList : 순서를 유지한다
Queue : 먼저 입력된 객체가 먼저 출력된다.
Deque : 양쪽에서 객체를 입력, 출력할 수 있다.
HashSet<Integer> hs = new HashSet<Integer>();
Iterator<Integer> i = hs.iterator() // iterator라는 인터페이스를 통해 객체를 가져온다
Hashtable<K키타입,V값타입> ht = new Hashtable<키타입,값타입>();