for반복문
- 인덱스를 가지는 배열이나 리스트(List)가 가지는 원소(Item)에 대해 특정 구현부를 반복하기 위해 사용한다.
- 구조 :
for (<인덱스 선언부>; <반복 조건부>; <증감부>) {<구현부>}- 모든 배열 및 리스트의 원소에 대한 인덱스는 0부터 시작하고, (배열의 길이 - 1) 혹은 (리스트의 크기 - 1) 값이 항상 마지막 인덱스 번호이다.
- <반복 조건부>가 참 일때 <인덱스 선언부>에 있는 변수에 대해 <증감부>의 로직을 실행하는 구조.
향상된 for문(Enhanced for)
- 배열이나 컬렉션(Collection)을 대상으로 특정 구현부를 반복하기 위해 사용한다.
- 일반 for(i)문과 다른점은 인덱스 번호를 명시적으로 사용하지 않는다는 점이다. 인덱스 번호가 필요 없다면 일반 for(i)문 보다 향상된 for 문을 이용하는 것이 오류 확률을 줄인다.
- 구조 :
for (<원소 선언부> : <배열|컬렉션>) {<구현부>}
While문
- 특정 배열 뿐만 아니라 어떠한 조건하에 특정 구문을 (횟수와 관계없이) 반복하고자 할 때 사용한다.
- (구조) :
while (<반복 조건>) { <구현부> }- <반복 조건>이 참이라면 <구현부>를 실행한다.
- 애초에 <반복 조건>이 거짓이라면 <구현부>를 한번도 실행하지 않는다.
Do-while문
- 용도 자체는 While 문과 유사하다.
- (구조) :
do {<구현부>} while (<반복조건>);- <반복 조건>이 참이라면 <구현부>를 실행한다.
- While문과의 차이는 <반복 조건>과 무관하게 최초 한번은 실행시킨다.
Switch문
- 특정 대상(변수)에 대한 값으로 구현부를 분기하고자 할 때 사용한다.
- (구조)
switch (<대상>) {
case <값1> :
<값1에 대한 구현부>
<break; ?>
case <값2> :
<값2에 대한 구현부>
<break; ?>
default:
<그 외 값 처리를 위한 구현부?>
}- 특정 case에서 break 문이 없다면 그 아래에 있는 모든 case와 default가 실행된다.
If문
- 특정 조건에 따라 실행할 구현부를 분기하고자 할 때 사용한다.
- (구조) if(<조건>) {
<참 구현부>
} else if (<조건 2>){
<조건 2에 대한 참 구현부>
} else {
<거짓 구현부>
}
의도된 예외
: 개발자는 의도적으로 예외를 발생시킬 수 있다.
: ( 구조 ) throw < Throwable 객체 >;
Ex) throw new Exception("고의로 던진 예외");
커스텀 예외
: 개발자는 본인의 필요에 따라 존재하지 않는 예외를 스스로 만들 수 있다.
: 어떠한 클래스로 하여 Exception 클래스를 상속 받도록 하면 일반 예외처럼 사용할 수 있다.
Throwable : Java에서 발생할 수 있는 모든 오류와 예외의 부모이다.
Error : Java에 존재하는 모든 오류의 부모. Throwable을 상속받는다.
: 'try-catch'를 활용하여 예외처리를 하지 않는것이 좋다.
: 시스템/환경 자체에서 오류가 발생한걸로, '복구 불가능한'(Irrecoverable) 오류로 분류된다.
OutOfMemoryError : 프로그램이 사용 가능한 할당된 메모리를 다 사용하였거나 더 이상 시스템에 여유 메모리가 없을 때 발생한다.
Exception : Java에 존재하는 모든 예외는 해당 Exception 클래스를 상속 받는다. Throwable을 상속받는다.
NullPointerException : 변수가 가진 Stack 주소상의 값이 없는 참조 타입에 대해 그 멤버에 접근하였을 때 발생한다. 즉, 값이 null인 참조 타입의 변수의 멤버에 접근하면 발생한다. 가령 아래와 같은 상황에서 NullPointerException 이 발생함.
Ex) String someText = null;
System.out.println(someText.toUpperCase());
NumberFormatException : 숫자에 대한 형식이 잘못되었을 때 발생한다. 가령 아래와 같은 상황에서 NumberFormatException이 발생함.
Ex) String numberString = "Hello World!";
int numberInt = Integer.parseInt(numberString);
ArrayIndexOutOfBoundsException : 어떠한 배열에 대해 이 배열의 크기 이상인 값으로 인덱스를 전달하면 발생한다. 가령 아래와 같은 상황에서 IndexOutOfBoundsException 예외가 발생한다.
Ex) int[] numbers = new int[]{1,2,3,4,5}
System.out.println(number[5]);
System.out.println(number[-1]);
IndexOutOfBoundsException : 어떠한 리스트에 대해 리스트가 가지는 인덱스 범위 밖의 값을 인덱스로 사용하면 발생한다. 가령 아래와 같은 상황에서 IndexOutOfBoundsException 예외가 발생한다.
Ex) ArrayList< Integer > numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println(numbers.get(3));
반환
- throw 키워드를 이용해서 고의로 예외를 발생시키는 병우는 return이 없어도됨.