SeSAC 12일차(2023-08-01)
자바 기초(예외 처리), 자료구조(배열)
예외 처리
예외 발생
- throw
- 예외 인스턴스를 만들어 예외를 발생시킨다.
- Exception 타입으로 발생시킬시 컴파일 단계에서 예외처리가 되야함
- throws
- 메소드에서 발생할 수 있는 예외를 명시한다.
- Exception 타입 또는 이를 상속한 예외가 발생하면 반드시 throws를 사용하여 명시
ex)
class ExceptionSet{
public ExceptionSet() {}
void runThrows() throws Exception {
throw new Exception();
}
void runThrow() {
throw new RuntimeException();
}
}
psvm{
ExceptionSet exceptionSet = new ExceptionSet();
// 런타임시 예외 발생
exceptionSet.runThrow();
// 컴파일 단계에서 에러
exceptionSet.runThrows();
}
- 상속을 통한 커스텀 예외
- Exception 클래스를 상속받아 컴파일 예외를 정의
- RuntimeException 클래스를 상속받아 런타임 예외를 정의
ex)
class CustomException extends Exception{
…
}
class CustimRException extends RuntimeException{
…
}
자바 자료구조
배열(Array)
배열의 구조
- Array
- 동일한 타입 데이터를 고정된 형태로 모음
- 메모리 영역을 미리 계산하여 공간을 할당
- 항목의 타입과 항목의 개수를 통해 공간을 계산
- 하나의 배열 내부 항목들은 메모리의 한 공간에 붙어있음
- 동일한 타입 데이터를 고정된 형태로 모음
- 배열의 특징
- 한번 정해진 항목의 타입과 크기는 변동 불가 (데이터 추가 불가)
- 변동시 새로운 배열을 생성 및 복사
- 데이터의 순서(인덱스) 가 존재 (0부터 시작)
- 한번 정해진 항목의 타입과 크기는 변동 불가 (데이터 추가 불가)
자바의 배열
- 배열 생성
- 변수 이름 또는 타입에 []를 붙여서 해당 타입의 배열 생성
- new를 활용해 인스턴스로 초기화
- {} 안에 , 구분을 통해 같은 타입의 여러 항목을 넣어 바로 초기화
ex1)
// 배열 타입 선언
int intArray1[];
String strArray1[];
int[] intArray2;
String[] strArray2;
// 배열 인스턴스 초기화
intArray1 = new int[10]; // 10개의 0으로 초기화
strArray1 = new String[10]; // 10개의 null로 초기화
// {} 활용 초기화
int intArray3[] = {1, 2, 3, 4, 5};
String[] strArray3 = {’가’, ‘나’, ‘다’, ‘라’, ‘마’};
ex2)
class MyData{
String name;
int num;
public MyData(String name, int num) {
this.name = name;
this.num = num;
}
}
// 동일 타입의 인스턴스 저장
MyData m1 = new MyData(”자바”, 1);
MyData m2 = new MyData(”자료구조”, 2);
MyData[] mdArray = {m1, m2);
- 배열 탐색
- 배열은 인덱스가 존재하며 해당 인덱스를 통해 데이터 접근 가능 (배열인스턴스[인덱스])
- 반복문 활용하여 배열의 모든 항목 탐색
ex)
int[] intArray1 = {1, 2, 3, 4, 5};
sout(intArray1[0]); ⇒ 1 출력
// length 필드 활용하여 전체 반복
ins s = intArray1.length;
for (int i = 0; i < s; i++){
sout(intArray1[i]);
}
// for-each 문 사용
for (int i : intArray1) {
sout(i);
}
- 배열 활용
- 수정
- 배열에서 인덱스를 통해 접근 후 원하는 값으로 재할당
- 배열 자르기
- copyOfRange() 메소드를 활용하여 슬라이싱 복사
- 수정
ex)
// 인덱스의 값 변경
intArray1[1] = 10;
// 배열 슬라이싱(복사)
int[] slice1 = Arrays.copyOfRange(intArray1, 1, 3);
for (int i : slice1) {
sout(i);
}
⇒ 2, 3번째 값 출력
오늘의 실습 코드
https://github.com/yubin-im/SeSAC/tree/4a8c4f59ad2fb524fcf03111a802fd616cee29dd/20230801
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 14일차 / 자료 구조(리스트) (0) | 2023.08.03 |
---|---|
SeSAC 13일차 / 자료 구조(배열) (0) | 2023.08.03 |
SeSAC 11일차 / 자바 기초(인터페이스, 자바 예외 처리) (0) | 2023.08.02 |
SeSAC 10일차 / 자바 기초(오버라이딩, 인터페이스) (0) | 2023.07.29 |
SeSAC 9일차 / 자바 기초(클래스, 상속) (0) | 2023.07.28 |