티스토리 뷰

PL/JAVA

[JAVA] 자바 - 배열와 예외 처리

poopooreum 2024. 5. 22. 13:41
반응형

✏️ 배열

배열은(Array)은 인덱스(index)와 인덱스에 대응하는 데이터들로 이루어진 연속적인 자료 구조로서, 같은 종류의 데이터들이 순차적으로 저장된다. 배열을 생성하는 코드는 다음과 같다. 

int i[] = new int[10]; // 10개의 정수 공간 배열 생성, 배열 이름은 i

 

 

✏️ 배열 선언 및 생성

자바에서 배열의 생성은 두 단계로 이루어진다.

  1. 배열에 대한 레퍼런스 변수 선언 => int intArray[]; // 이 선언만으로는 배열 공간이 할당되지 않으며 레퍼런스 변수만 생성된다. 즉 배열 공간에 대한 주소 값(레퍼런스 값)을 가진다고 할 수 있다. 그리고 선언 시에는 크기를 지정하면 안 된다.
  2. 배열 생성 - 배열의 저장 공간 할당 => intArray = new int [5]; // 반드시 new 연산자를 이용하여 배열을 생성한다.

※ 배열 객체의 크기를 반환해주는 length 필드가 존재한다. int size = intArray.length;

for each문 : 기존의 for문을 변형하여, 배열이나 나열(enumeration)의 크기만큼 루프를 돌면서 각 원소를 순차적으로 접근하는데 유용하게 만든 for문을 칭한다. ex)  for(int k : intArray)  

 

 

✏️ 다차원 배열

자바에서는 여러 차원의 배열을 만들 수 있다. 3차원 이상의 배열은 복잡하므로 2차원 배열만 다룰 예정이다.

// 2차원 배열의 선언
int intArray[][];
char charArray[][]'
double doubleArray[][];

// 2차원 배열 생성
intArray = new int[2][5]; // 2행 5열의 2차원 배열 생성
charArray = new char[5][5]; // 5행 5열의 2차원 배열 생성
doubleArray[5][2]; // 5행 2열의 2차원 배열 생성

// 2차원 배열의 초기화
int intArray[][] = {{0,1,2},{3,4,5},{6,7,8}};
char charArray[][] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}};
double doubleArray[][] = {{0,01,0.02},{0.03,0.04}};

 

 

✏️ 비정방형 배열

위에서 언급했던 배열들은 모두 정방향 배열이다. 정방형 배열은 각 행의 열 개수가 모두 동일한 배열을 말하며, 비정방향 배열은 행마다 열의 개수가 서로 다른 배열을 말한다. 코드 예시는 아래와 같다. 2차원 배열에 대한 레퍼런스 변수를 먼저 선언한 후, 각 행을 가리키는 레퍼런스 배열을 생성하고, 각 행에 원하는 크기만큼의 배열을 생성하면 된다.

int i[][]; // 2차원 배열의 레퍼런스 변수 i선언
i = new int[4][]; // 각 행을 가리키는 레퍼런스 배열 생성
i[0] = new int[1]; // 첫째 행에 1개 크기의 배열 생성
i[1] = new int[2]; // 둘째 행에 2개 크기의 배열 생성
i[2] = new int[3]; // 셋째 행에 3개 크기의 배열 생성
i[3] = new int[4]; // 넷째 행에 4개 크기의 배열 생성

 

 

✏️ 예외(Exception)

자바에서 오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류를 예외(Exception)이라고 한다. 문법에 맞지 않게 작성된 코드는 사전에 컴파일러에 의해 컴파일 오류로 걸러지지만, 예외는 사용자의 잘못된 입력이나 배열의 인덱스가 배열의 크기를 넘어가는 등, 예기치 못한 상황에 의해 프로그램 중에 발생한다. 예시를 알아보자

  • 정수를 0으로 나누는 경우
  • 배열의 크기보다 큰 인덱스로 원소를 접근하는 경우
  • 존재하지 않는 파일을 읽으려고 하는 경우
  • 정수 입력을 기다리는 코드가 실행되고 있을 때 사용자가 문자를 입력하는 경우 등등

이렇게 실행 중에 예외가 발생하게 되면 자바 플랫폼이 가장 먼저 알게 되어, 현재 실행 중인 응용프로그램에게 예외를 전달한다. 만약 응용프로그램이 예외에 대처하는 코드를 가지고 있지 않다면 자바 플랫폼이 응용프로그램을 종료시킨다. 아래 사진은 예외가 발생하는 예시 사례이다.

 

 

✏️ 예외 클래스

예외 타입(예외 클래스) 예외 발생 경우 패키지
ArithmeticException 정수를 0으로 나눌 때 발생 java.lang
NullPointException null 레퍼런스를 참조할 때 발생 java.lang
ClassCastException 변환할 수 없는 타입으로 객체를 변환할 때 발생 java.lang
OutOfMemoryError 메모리가 부족한 경우 발생 java.lang
ArrayIndexOutOfBoundsException 배열의 범위를 벗어나서 접근 시 발생 java.lang
IllegalArgumentException 잘못된 인자를 전달 시 발생 java.lang
IOException 입출력 동작 실패 또는 인터럽트 시 발생 java.io
NumberFormatException 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생 java.lang
InputMismatchException Scanner 클래스의 nextInt()를 호출하여 정수로 입력받고자 하였지만,
사용자가 ‘a'등과 같이 문자를 입력한 경우
java.util

 

 

✏️ 예외 처리

예외 처리란 개발자가 작성한 프로그램의 실행 중에 예외가 발생하면, 이에 대응하는 것을 말한다. 자바에서는 예외 처리를 위하여 try-catch-finally 문을 사용한다. 예외가 발생할 가능성이 있는 실행문들을 try{} 블록으로 묶고, 예외 처리 코드를 catch{} 블록 내에 작성한다. catch() 문의 안에는 처리하고자 하는 예외의 타입을 선언해야 하며, 예외마다 하나씩 작성되어야 한다. 아래 코드에서 만약 예외가 발생하면 실행 과정은 try문 ->  catch()문 -> finaly{}블록문이며 예외가 발생하지 않으면  try문 -> finally{} 블록문이다.

try{
	예외가 발생할 수 있는 실행문(try블록)
}
catch(처리할 예외 타입 선언){
	예외 처리문(catch 블록)
}
finally{ // 생략 가능
	예외 발생 여부와 상관없이 무조건 실행되는 문장(finally블록)
}

예외 처리문을 작성한 경우이다.

반응형

'PL > JAVA' 카테고리의 다른 글

[JAVA] 자바 - 상속 2  (0) 2024.05.26
[JAVA] 자바 - 상속  (0) 2024.05.25
[JAVA] 자바 - 클래스와 객체  (0) 2024.05.23
[JAVA] 자바 - 기본 프로그래밍  (0) 2024.05.22
[JAVA] 자바 - 자바 시작  (0) 2024.05.21
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함