1. main() 메소드가 없는 클래스를 실행한 경우
오류: ex.Hello 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.
public static void main(String[] args)
원인: 자바 프로그램은 JVM이 구동되면 맨 처음 main() 메소드를 찾아서 실행한다.
따라서 main() 메소드가 없거나 잘못 작성하면 클래스를 실행할 수 없다.
2. 변수 선언 후 초기화하지 않은 경우
오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable value may not have been initialized
원인: 초기화되지 않은 변수는 읽을 수가 없다.
3. 데이터 타입별 표현 가능한 값의 범위를 초과하는 값이 변수에 저장된 경우
또는
선언된 배열 타입과 다른 타입의 값을 저장하려고 한 경우
오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to byte
원인: byte가 표현할 수 있는 값의 범위는 -128 ~ 127,
배열은 같은 타입만 저장할 수 있다.
3-1. 자바 정수 리터럴 기본 타입의 저장 범위를 초과하는 정수의 값이 변수에 저장된 경우
오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 1234567898765 of type int is out of range
원인: 자바 정수 리터럴 기본 타입은 int,
int의 저장 범위를 넘어서는 정수는 값 뒤에 소문자 l 또는 대문자 L(long 타입)을 붙여서 변수에 저장해야 한다.
int가 표현할 수 있는 값의 범위는 -2,147,483,648 ~ 2,147,783,647
ex. long longValue = 1234567898765L;
4. char 타입 변수를 빈 문자(‘’)로 초기화한 경우
오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Invalid character constant
원인: char 타입 변수를 빈 문자로 초기화하려면 ‘ ’ 작은따옴표 사이에 공백을 포함해야 한다.
단, String 변수는 공백없이 “” 큰따옴표 빈 문자로 초기화 가능
5. 정수 타입 / 0 연산 또는 정수 타입 % 0 연산한 경우
오류: Exception in thread "main" java.lang.ArithmeticException: / by zero
원인: 정수 타입인 경우 나누는 수로 0을 사용할 수 없다.
정수 / 0.0 가능, 결과값 Infinity 출력
정수 % 0.0 가능, 결과값 NaN 출력
6. 지역 변수를 선언된 블록 바깥에서 사용한 경우
오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
i cannot be resolved to a variable
원인: 메소드 블록 내에서 선언된 변수는 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.
즉, 지역 변수는 선언된 블록 범위를 벗어나면 사용할 수 없다.
7. null 값을 가지고 있는 참조 타입 변수를 사용한 경우
오류: Exception in thread "main" java.lang.NullPointerException
원인: null로 초기화된 참조 변수는 스택 영역에만 생성되기 때문에 힙 영역에 객체를 참조하지 않는다.
즉, null로 초기화된 참조 변수는 참조할 객체가 없으므로 사용할 수 없다.
8. 배열의 인덱스 범위를 초과해서 사용한 경우
오류: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
원인: 배열의 인덱스 범위는 0 ~ (배열변수.length - 1)
9. 정수로 변환할 수 없는 문자열을 정수로 변환시키려고 한 경우
오류: Exception in thread "main" java.lang.NumberFormatException
원인: Integer.parseInt( ) 메소드를 통해 정수로 변환 가능한 문자열 ex. "10", "100" 등…
참고도서 : 이것이 자바다
'Java' 카테고리의 다른 글
Program arguments와 VM arguments의 차이점 (0) | 2020.08.06 |
---|---|
sdkman 설치 (0) | 2020.07.23 |
sdkman JDK 경로 이클립스에 설정하기 (0) | 2020.04.16 |
댓글