0329
<main 에서>
Scannner sc = new Scanner(System.in); // 객체를 만드는 것
객체.메소드(sc);
객체.메소드(new Scanner(System.in)); // 객체를 만드는 명령을 다른 클래스로 던져서 호출해주는 것
타입 메소드(Scanner sc) { // 다른 클래스(매개변수에 저장)
~~~
}
<메소드>
- 객체의 동작에 해당
- 메소드는 기본적으로 '메소드 이름( )'
<return 리턴값>
- 메소드의 결과 값을 메소드 호출부로 반환
- 특정 값 1개만 return 가능 (return a, b; 와 같이 a와 b를 동시에 리턴하는 것은 불가능)
<메소드 호출 방법>
1) 인스턴스가 있는 경우(객체화 된 경우)
인스턴스이름.메소드이름(인수)
Scanner scanner = new Scanner(System.in); // scanner 인스턴스
scanner.next(); // 인스턴스를 통한 호출
2) 인스턴스가 없는 경우
클래스이름.메소드이름(인수)
Integer.parseInt(~);
- static: 공용 데이터, 어디서나 사용 가능
< ★★ 메소드 오버로딩(method overloading) ★★>
- 메소드 이름이 같고, 매개변수선언이 다른 메소드가 여러 개 존재할 수 있다.
- 리턴 타입은 상관 없다.
<재귀 호출(Recursive call)>
- 메소드를 정의할 때 자신의 메소드를 자신이 호출하는 방식
- 반복문의 처리, 복잡한 알고리즘 처리
- 재귀 호출을 잘못 구현하면 무한 루프에 빠질 수 있음 // 메모리 계속 Stack에 쌓임
StackOverflowError 예외 발생
- 반드시 언제 호출이 끝날 것인지 명시