교육 (Today I Learned)/SeSAC

SeSAC 12일차 / 자바 기초(예외 처리), 자료구조(배열)

Bay Im 2023. 8. 2. 00:49
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