메소드(Method)
메소드(함수)란 한 가지 목적을 처리하기 위한 명령어 묶음을 의미한다.
결과값(반환값)이 하나이거나 없으며 함수가 객체 내부에서 작성되었을 때 메소드(Method)라고 불린다.
유형)
- 파라미터, 반환값 모두 존재
- 파라미터만 존재
- 반환값만 존재
- 파라미터, 반환값 모두 없음
이는 JS에서 함수 파트를 배웠을 때와 동일한 형식을 가진다.
문법)
[반환값의 자료형(반환형)] [메소드 이름(파라미터 목록)] { 명령어 }
* 가장 기본적인 함수(public static void main(String[] args){ ... }의 의미
- 자바 프로그램의 실행 시작 메소드
- public : 접근 제어자 <-> private
- static : 인스턴스 생성 없이 사용 가능
- void : 반환값이 '없다'라는 의미 => return 사용 안 함
- main : 고정된 이름
- String[] args : 프로그램 시작 시 옵션값 저장 배열
1. 메소드 기본 예제
public class MethodTest {
// 인스턴스 멤버 변수
static int a; // static 멤버 변수(class 변수)
float b;
String c;
public static void main(String[] args) {
a = 10000;
method1();
} // main end
// static이 붙은 멤버(변수, 메소드)는 static이 붙은 멤버만 사용할 수 있음
// void를 사용하는 메소드 작성
static void method1() {
System.out.println("return 없는 메소드 실행");
add(); // 메소드 호출 -> 메소드는 메소드 안에서 호출 가능
}
static int add() {
System.out.println("return 있는 메소드 실행");
return 0;
}
} // class end
2. Self Instance 예제 - main 안에서 자기 자신을 인스턴스
public class SelfInstanceClass {
int a;
float b;
String c;
public static void main(String[] args) {
SelfInstanceClass sfc = new SelfInstanceClass();
sfc.a = 100;
sfc.b = 50.0f;
sfc.c = "1000";
sfc.add();
}
void add() {
System.out.println(a + b + c);
}
}
변수 용어
- 멤버 변수 : 클래스 내부, 메소드 외부에 작성하는 변수
- 인스턴스 (멤버)변수 : 멤버 변수이며, static이 붙지 않은 변수
- 스태틱 (멤버)변수 : 멤버 변수이며, static이 붙은 변수
- 클래스 변수 : 스태틱 변수와 같은 말
- 지역 변수 : 메소드 내부에 작성하고, 내부에서만 사용할 수 있는 변수
- 매개 변수 : 파라미터를 받기 위해 메소드명 다음 '()' 사이에 작성하는 변수 => 지역 변수와 동일
- 필드 : 멤버 변수 중 인스턴스 변수를 지칭하는 다른 말
- 인스턴스 참조 변수 : 멤버 변수 또는 지역 변수이며, 인스턴스의 위치값을 저장하는 변수 => class명 변수 = new class명();
예외 처리(Excepiton Handling)
Error(오류)
- 컴파일 오류(Compile Error) : 문법 오류(오타일 확률 높음)
- 실행 오류(Runtime Error) : 사용자의 오작동 -> 예외 => 프로그램이 비정상적으로 종료됨
즉, 예외 처리란 개발자가 실행 오류를 예측하여 해당 오류 발생 시 조취할 수 잇는 코드를 미리 작성하는 것을 말한다. 다시 말해 비정상적인 종료를 막는 것이다.
이때 사용해주는 것이 try catch 구문이다.
try : 범위 안에 예외사항이 발생할 수 있는 코드를 작성
catch : try 코드에서 발생한 예외를 조취하기 위한 코드를 작성
finally : 예외와 상관없이 실행해야 하는 코드를 작성 => 생략 가능
주요 예외사항)
- 숫자가 아닌 문자열을 숫자로 변환하려는 경우 => NumberFormatExcepiton
- 정수를 0으로 나누는 경우 => ArithmeticException
- 객체(인스턴스)가 존재하지 않는데 사용하려는 경우 => NullPointException
- 존재하지 않는 파일을 열려고 하는 경우 => IOException
- 배열에서 배열 크기보다 큰 순번으로 값을 읽으려는 경우
- 네트워크 관련 처리
- 데이터베이스 관련 처리
기본적으로 catch()에는 위 예외사항의 객체를 지정해야 한다. 또한 모든 예외에 대해서 지정할 수 있는 Exception 하나로 모든 예외사항을 처리할 수 있다. 만약 2가지 이상의 예외사항이 발생한다면 catch()를 여러 번 작성하면 된다.
메소드에서 예외 선언)
throw : 메소드에서 발생한 예외사항을 호출한 메소드로 전달
반환형 메소드명(매개변수 throws 예외사항1, 예외사항2, ... { } => 매개변수 목록 옆에 작성
1. 일반 예외사항 처리 예제
import java.util.Scanner;
public class ExceptionHandling {
public static void main(String[] args) {
Scanner scan = new Scanner((System.in));
String s = null;
int n1 = 0, n2 = 0, result = 0;
try {
System.out.println("Number1 : ");
s = scan.nextLine();
n1 = Integer.parseInt(s);
System.out.println("Number2 : ");
s = scan.nextLine();
n2 = Integer.parseInt(s);
result = n1 / n2;
}catch (NumberFormatException nfe) {
System.out.println("예외사항이 발생했습니다.");
}catch (ArithmeticException ae) {
System.out.println("0으로 나눌 수 없습니다.");
}catch (Exception e) {
System.out.println("예외사항이 발생했습니다.");
}finally {
System.out.println("이 문장은 항상 나옵니다.");
}
System.out.println(result);
}
}
2. 메소드에서 예외 선언 예제
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionHandling2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n1 = 0, n2 = 0, result = 0;
try{
System.out.print("N1 : ");
n1 = scan.nextInt();
System.out.print("N2 : ");
n2 = scan.nextInt();
result = div(n1, n2);
} catch (InputMismatchException ie){
System.out.println("입력 미스!");
return;
} catch (ArithmeticException ae){
System.out.println("0으로 나눌 수 없습니다.");
return;
}
System.out.println("나눗셈 결과 : " + result);
}
// 메소드 내 예외사항 처리
static int div(int n1, int n2) throws ArithmeticException{
int result = 0;
result = n1 / n2;
return result;
}
}
'JAVA' 카테고리의 다른 글
Java_5강(MVC 패턴 예제) (0) | 2022.09.20 |
---|---|
Java_4강 (0) | 2022.09.19 |
Java_2강 (0) | 2022.09.18 |
Java_1강 (0) | 2022.09.16 |
Java_0강(Java 및 IntelliJ 설치) (0) | 2022.09.14 |