Java언어의 핵심개념인 클래스 (class)에 대해 설명합니다.






반응형
LIST


Exception (예외) 

Java 프로그램이 수행되는 중에 오류 (error)가 발생하면
이것에 대한 정보를 담은 객체가 만들어지는데, 이것을 Exception 이라고 한다.

이러한 Exception은 크게 둘로 나누어진다.
1. Checked Exception
2. Unchecked Exception

Checked Exception

오류가 발생했을 때, 프로그램이 수행을 포기하지 않고도
복구할 수 있는 방법을 찾을 수 있는 Exception을 말한다.
예를 들어, 사용자가 파일이름을 지정하면, 그것을 열어서 동작하는 프로그램이라고
가정하자. 만약, 존재하지 않는 파일이름을 지정하면, 파일을 열 수 없기
때문에 오류가 발생한다. 
하지만, 사용자에게 오류를 알리고 다시 파일이름을 지정하라고 하여
복구할 수 있다.

여기에 해당하는 Exception에는
FileNotFoundException 같은 것이 있다.
여기에 대해서 나중에 더 자세히 설명한다.

Unchecked Exception
오류가 발생하면, 프로그램이 수행을 포기해야하거나, 
원래 목적했던 바를 이룰 수 없는 Exception을 말한다.
이것은 크게 둘로 나누어 ErrorRuntimeException이 있다.

Error는 프로그램 외적인 요인으로부터 생긱는 오류이다.
파일 읽기를 하는 프로그램이 수행 중 하드디스크가 하드웨어적으로 고장난 경우가
여기에 해당한다.

RuntimeException은 프로그램 수행 중에 논리 오류에 의해
일어나는 상황을 말한다. 예를 들어 나누기를 하는데 0으로 나누거나,
배열 인덱스를 사용할 때, 범위를 벗어나는 값을 사용하는 경우이다.
전자를 ArithmeticException, 후자를 ArrayIndexOutofBoundsException이라고 한다.

Arithmetic Exception예제

아래 프로그램은 0으로 나누는 연산이 들어가는 프로그램이다.

실행 중에 ArithmeticException이 발생하는 것을 알 수 있다.

ArrayIndexOutOfBoundsException 예제


이번에는 배열의 인덱스가 범위를 넘어가는 경우에 대한 예제이다.

아래 프로그램에서 인덱스는 0~2까지 이지만,

line 8에서 3을 사용하고 있다. 

프로그램을 실행하면 ArrayIndexOutOfBoundsException 이 발생함을 알 수 있고,

관련 정보들, 인덱스 3이 사용되었고, 그것이 line 9 임을 표시하고 있다.


Checked Exception 처리를 위한 try-catch문


<< 작성 예정 >>



Java프로그램 실행 중 발생하는 오류(Exception)을 처리하기 위한 try-catch 문에 대해 설명합니다.






반응형
LIST

다차원 배열 (Multi dimensional array)

2차원 이상의 배열을 다차원 배열이라고 한다.
행렬 같은 것을 생각하면 2차원 배열을 쉽게 이해할 수 있고,
입체공간을 생각하면 3차원 배열이 머리속에 그려질 것이다.

2차원 배열의 선언

1차원 배열과 비슷하지만, 배열을 나타내는 [] 표시를
하나 더 사용해서 아래와 같이 나타낸다.
int[][] a = new int[3][3];

2차원 배열선언과 동시에 값을 할당하는 것은 아래와 같이 한다.

눈여겨 볼 것은, 2차원 배열이기 때문에 행별로 { }로 감싸서 표시해야 하다.

만약, { } 표시를 하지 않을 경우에는 다음과 같이 컴파일 오류로 표시된다.


선언된 2차원 배열의 각 요소에 접근하는 것은 for-loop을 2번 중첩하면 된다.



2차원 배열의 길이


2차원 배열의 길이는 1차원 배열과는 조금 다르다.

예를 들어 아래와 같은 3x3 배열을 예를 들어보자.

전체적인 공간은 9개이다.


int[][] a = new int[3][3];


하지만, a.length는 행의 개수를 의미하여, 3이 되다.

전체 공간의 개수 9가 아님에 유의하자.

각 행에 들어있는 열의 개수는 각 행별로 확인해야 한다.

예를 들어, 0번 행의 경우에는 a[0].length와 같다.

아래는 2차원 배열에 .length를 사용했을 때의 출력결과를 보여준다.


이렇게 되는 이유는 아래 그림을 보면 다소나마 쉽게 이해할 수 있다.

a.length는 a안에 있는 요소의 개수 이므로 3이 되고,

a[0].length는 그 안에 있는 요소의 개수이므로 3이 되는 이치이다.




3차원 배열의 선언


2차원배열 보다 [] 를 하나 더 붙이면 3차원 배열을 만들 수 잇다

이것을 그림으로 표시해 보면 아래와 같은 입체를 생각해볼 수 있다.

모두 12개( = 3*2*2)의 사각형으로 구성된 입체이다. 

3차원 배열에 대한 초기화는 조금 신경써서 해야 한다.

c[3][2][2]의 경우에,

우선 { }으로 3등분을 한다.

그리고, 각 { }안에서, { }으로 다시 2등분을 한다.

가장 안 쪽의 { }안에, 숫자 2개씩을 쓰면 된다.

이것을 그림으로 보여주면 아래와 같다.


실제로 초기화 한 예는 아래와 같다.


그리고, 3차원 배열의 각 요소를 접근하는 것은 

2차원 배열과 마찬가지지만, for-loop을 한 번 더, 즉 3번을 중첩하여야 한다.



3차원 배열의 길이


위에서 2차원 배열의 길이를 설명했다.

3차원 배열의 길이도 아래 그림과 같은 의미를 같는다. 

배열 이름에다가 .length를 붙이면, 가장 큰 그룹의 개수를 의미하며,

차원이 하나씩 들어갈 수록 그 안에 있는 서브그룹의 개수들을 의미하게 된다.


아래 그림에서 a.length는 가장 큰 그룹의 개수이므로 3이 되고,

a[0].length는 그 안에서의 서브그룹의 개수이므로 2,

마지막으로 a[0][0]는 또 다시 그안에서의 서브그룹의 개수이므로 2가 되는 것이다.

따라서, 전체 공간의 개수를 알려면 각 단계별 개수를 모두 곱한 값이 된다.


3차원 배열의 크기를 출력해 보는 아래 예제를 살펴보자.

c는 3*2*2 크기를 갖는 3차원 배열이다.

이 때, c.length는 가장 큰 그룹의 개수를 의미한다.

그리고 c[0]은 0번째 그룹 안에서의 서브그룹의 개수, 2를 의미한다.

마지막으로 c[0][0]는 가장 안쪽 그룹에 있는 숫자의 개수이므로 2가 된다.




위의 내용을 동영상에서 보다 자세하게 설명합니다. 


반응형
LIST

+ Recent posts