예외 (Exception)
예외의 종류와 계층 구조
- 예외의 최상위 구조는 Exception이다.
- 자주 발생하는 예외
- IOException : 입/출력 과정에서 문제가 발생
- NumberFormatException : 숫자 형식이 아닌 데이터를 숫자 변경 시도
- ArrayIndexOutOfBoundsException : 존재하지 않는 배열 공간 사용
- ArithmeticException : 불가능한 산술연산을 수행
예외 처리 기본
- 예외 객체를 처리하는 가장 기본적인 방법 try ~ catch 문을 사용한다.
try { 정상적인 수행문 } catch(오류 종류 e) { 오류 발생 시 출력문 }
- 여러개의 오류가 발생하면 다중 catch문을 사용하여 처리한다. (catch문을 연속으로 사용)
- 코드 에러 안정성의 문제로 마지막에 예외의 최상위클래스인 Exception 타입의 catch문을 추가한다.finally 블록
carch(Exception e){ 출력문 }
- 예외 발생 여부와 무관하게 무조건 실행되는 영역
- 예외 처리 로직이 종료되기 전에 반드시 실행되어야 한다.
throws 예약어
- 메서드 오른쪽에 위치한다.
- 특정 메소드에서 발생한 예외 객체를 해당 메소드를 호출한 쪽으로 책임 전가한다.
(상위 클래스에 넘기는 의미) - 메서드를 여러 개 넣을 수 있다.(콤마 이용)
- 여러 메서드 에서 발생되는 예외를 특정 메서드로 집중 시킬 수 있다.
thorw 예약어
- 사용자가 원하는 시점에 강제로 예외를 발생시킬 필요가 있을 때 사용
(강제로 예외 발생 시켜 더 이상 프로그램이 진행되지 않도록)
Java API 패키지
- 지금까지는 Java의 문법을 배웠다면, 패키지들을 배우면서 어휘를 공부하는 것이다.
- 어휘에 해당하는 것이 API (Application Programming Interface)
Java.lang 패키지
- 모든 Java 프로그램에서 사용하는 필수 클래스를 모아놓은 패키지
- Java.lang 패키지 클래스는 import선언 없이 사용 가능 (유일하게 lang 패키지만 가능)
- 대표적으로 Object, String, Wrapper 클래스등이 있다.
Object 클래스
- 모든 클래스들의 최상위 부모 클래스
- 모든 클래스의 부모 클래스인 이유
- java클래스가 반드시 가져야하는 공통의 메서드를 Object 클래스로부터 상속 받도록 한다.
- 모든 java 객체를 하나의 타입으로 묶어서 다형성을 적용하기 위해 (묵시적 형변환을 통하여)hashcode() 메서드
- Object 클래스가 제공하는 hashcode()는 생성된 객체의 메모리 주소정보 제공
- Object 클래스로 부터 hashcode()메서드가 상속되지 않도록 오버라이딩 해야한다.
equals() 메서드
- 객체 주소가 아닌 내용을 비교하기 위해 사용
- Object로 부터 상속된 equals 메서드는 '==" 연산자와 동일하게 동작한다.
- 갹체의 내용을 비교할 수 있게 equals 메서드를 오버라이딩 해야한다.
toString() 메서드
- 객체가 소유한 멤버변수에 할당된 값을 하나의 문자열로 구성하여 반환
- 실제 객체가 가지고 있는 멤버변수의 값을 리턴하려면 오버라이딩 해야한다.
Object 클래스 정리
- 클래스를 생성 했으면 hashcode(), equals(), toString() 세가지 메서드는 Object클래스의 상속을 받지 않도록 오버라이딩 해줘야 한다.
String 클래스
- 생성법은 두가지 이다
- 일반 클래스와 같이 new 사용
- ""로 문자를 감싸서 리터럴 형태로 생성
- new를 사용하면 메모리에 새로운 String 객체가 생성
- 리터럴 형대의 문자열을 생성하면 리터럴 영역에 별도의 메모리 생성
- 정해져 있는 객체 외 추가를 하면 메모리 손실이 많다.
String 메서드
- 문자열 메서드이다. (char의 배열)
- 주로 사용되는 메서드
- .length() : 문자열 길이 반환
- .indexof() : 문자열에서 index 위치 반환
- .startsWith(x) : 문자열이 x로 시작하는지 반환
- .substring(x) : 문자열에서 x번 index 이후 문자열 반환
- .split(x) : 문자열을 x 기준으로 분리한 단어 반환
Stringbuffer 클래스
- String이 고정길이 문자열이면, Stringbuffer는 가변길이 문자열
- String클래스와 달리 문자를 계속 이어 붙여 나갈 수 있다. (메모리 손실이 적다)
Wrapper 클래스
- 기본타입의 객체를 클래스 형태로 만들어 준다.
- 기본타입과 동일한 이름의 클래스를 사용한다.
- 대표적으로 Integer.parseInt 가 있다.
'IT자료실 > Java' 카테고리의 다른 글
Java (java.sql 패키지-1) (0) | 2022.04.21 |
---|---|
Java (java.io 패키지) (0) | 2022.04.20 |
Java (인터페이스, 클래스 동시 상속 예제) (0) | 2022.04.19 |
Java (추상클래스, 템플릿 메서드 예제) (0) | 2022.04.16 |
Java(java.util 클래스, java collection, Generic) (0) | 2022.04.14 |