minNa2 2023. 3. 29. 18:20

<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 예외 발생
- 반드시 언제 호출이 끝날 것인지 명시

반응형