* main( ) 메소드
-형태
public static void main(String[] args){
}
-특징
1. 프로그램의 시작은 main( )부터 시작 된다.
2. public 속성은 메소드가 다른 클래스에서 호출이 가능하다는 것을 나타냄. 프로그램 실행시에 JVM에서 호출
3. static 속성과 관련 - main( )메소드가 포함된 객체가 생성되기 전에 JVM에 의해 미리 호출됨을 나타냄 // 논리적으론 이해했는데 정확히 뭔말인지..
4. void는 리턴값이 없음
5. 주어지는 모든 인자를 문자열 배열(String[] )로 처리하여 main( )메소드에 전달 된다.
cf. main( )메소드는 클래스마다 1개씩 존재 할 수 있다. 그러나 여러 클래스 중 시작되는 main( )메소드를 가진 클래스는 1개이고 이것을 메인클래스라고 한다.
5번과 관련하여 조금 더 자세히
1. IDE 없이 그냥 메모장에 작성한 코드와 명령창을 이용하는 경우, 메인메소드에 인자 전달
C:\> java Hello option1 option2 ... optionN
빨간표시 한것이 명령행 인자(command line argument)
이 명령행 인자들은 Hello 클래스의 메인메소드에 인자로 전달 됨.
실제 예
C:\> java Hello abc 3 % 5.7
class Hello
public static void main(String[] args){
}
args라는 문자열 레퍼런스 변수가 생기고
args.length 는 4이고
args[0] 값은 "abc", args[1] 값은 "3" , args[2] 값은 "%" , args[3] 값은 "5.7" 인 문자열 배열이 생기는 것.
2. Eclipse에서 메인메소드에 인자 전달
Run 메뉴 ㅡ> Run Configurations 메뉴 항목에서 Arguments 라는 배너에 들어가서 main( )메소드의 인자를 지정가능
-인자의 실제 이용
알다시피 전달 되는 값은 문자열 값이므로 이것을 이용하기 위해선 변환이 필요하기도 한다.
가령 사용한다면 다음과 같은 형태가 되겠다
C:\> java Calc 2 44 68
public class Calc {
public static void main(String[] args)
int sum = 0;
for(int i = 0; i<args.length; i++){
int n = Integer.parseInt(args[i]); //하나 궁금한 사실은 n이 계속 다시 선언되는게 문제 안되나보네? C에서는 이런거 안되는거 같은데,
sum+= n; //그것도 가물가물함
}
System.out.println("sum = "+sum);
}
*자바의 예외 처리
-컴파일시에 문법을 검사하므로 문법에 어긋나는 것들을 잡아냄(compile error). 그러나 실행 중(run-time)중에 발생하는 error를 미리 걸러내진 못함.
그래서 "예외"를 사용하여 처리함. // 예외처리 하지 않으면 프로그램 실행도중에 그냥 강제종료 되어버림.
-try - catch -finally 문
try {
예외 발생가능성이 있는 실행문
}
catch(예외 종류) {
예외시 처리문
}
finally{
예외 발생여부와 상관없이 무조건 실행되는 문장
} //finally 부분은 잘 안쓰임
예외 종류 |
예외 내용 |
ArithmeticException |
정수를 0으로 나눌 때 |
NullPointerException |
NULL 레퍼런스 참조 |
ClassCastException |
변환할수 없는 타입으로 객체 변환 |
OutOfMemoryException |
메모리 부족한 경우 |
ArrayIndexOutOfBoundsException |
배열의 범위를 벗어난 접근 |
IllegalArgumentException |
잘못된 인자 전달 |
IOException |
입출력 동작 실패 또는 인터럽트 발생 |
NumberFormatException |
문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 |
예외처리로 프로그램 종료 하고 싶을 땐 System.exit(0); 사용하면 됨.
'자바' 카테고리의 다른 글
4-2. 클래스와 객체 생성, 생성자 (1) | 2018.08.07 |
---|---|
4-1. 클래스와 객체_객체 지향 언어의 특성 (0) | 2018.06.04 |
3-2. 배열 (0) | 2018.06.03 |
3-1. 반복문 (0) | 2018.06.02 |
2-2. 자바 기본 프로그래밍 (공부메모) (0) | 2018.05.31 |