메서드

sim·2023년 3월 9일

자바의 정석

목록 보기
16/20
  1. 메서드란 :
    1) 특정 작업을 수행하는 일련의 문장들을 {}로 묶어서 이름 붙인 것.

    2) 값(입력)을 받아서 처리하고, 결과를 반환(출력) (클래스 안에 있어야함. (cf. 함수- 클래스에 독립적임)), 상자에서 어떤 과정을 거치는지 알 필요 없음 (블랙박스)

    3) 장점 : 코드 중복 줄일 수 있음, 코드 관리가 쉬움, 코드 재사용 가능, 코드 간결해서 이해하기 쉬워짐.

  2. 메서드의 작성 : 반복적으로 수행되는 여러 문장을 메서드로 작성/ 하나의 메서드는 한 가지 기능만 수행하도록 작성.

  3. 메서드 = 선언부 + 구현부

  • 선언부 : 반환타입 메서드이름 (타입 변수명, 타입 변수명, ...)
    a. 반환타입 (return type) : 출력. 반환값이 없는 경우 void
    b. 메서드 이름
    c. 매개변수 입력 (parameter declaration) : 입력(작업에 필요한 값들). 필요한 값의 개수만큼 변수 선언/ 변수의 타입이 같아도 변수의 타입 생략 불가능

  • 구현부 : 메서드 선언부 다음에 오는 {} 안에 메서드 호출시 수행될 코드를 넣는다.
    a. return문 : void가 아닌 경우 구현부{} 안에 'return 반환값;'이 반드시 포함되어야함. / 반환값의 타입은 선언부의 반환타입과 일치하거나, 적어도 자동 형변환이 가능한 것이어야 함. / 출력은 최대 하나만 허용!
    b. 지역변수(local variable) : 메서드 내에 선언된 변수 (매개변수도 lv), 다른 메서드 영역에 속해있으면 이름이 같아도 OK.

    ex.

    int add (int a, int b)
    {
    int result = a+b;
    return result;
    }

  1. 메서드의 호출 : 메서드이름(값1, 값2, ...)
  • 인수(argument)와 매개변수(parameter)
    a. 인수 or 인자: 메서드를 호출할 때 괄호()안에 지정해준 값들. 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함. / 인수는 메서드가 호출되면서 매개변수에 대입되므로, 인자의 타입은 매개변수의 타입과 일치하거나 자동 형변환이 가능해야 함.
    ex.

    public static void main(String[] args) {
    	int result = add(3,5); //메서드를 호출
    
    	int add (int x, int y) {
    		int result = x+y; 
    		return result; // --> 짧게 return x+y;
       }
  1. 메서드의 실행 흐름
    1) 먼저 인스턴스 생성 -> 2) 메서드를 호출 -> 3) 메서드 안에 문장들 수행 -> 4) 작업을 마치면 호출한 곳으로 돌아와서 이후의 문장들 실행

  2. return문 : 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아간다.

  • 반환 타입이 void이면 return;생략 가능 (컴파일러가 자동적으로 추가해줌)
  • 반환 타입이 void가 아니면 return; 생략 불가능. 항상 결과값이 반환되도록 해야함.
  1. 반환값 : 반환타입이 void가 아닐 때 return문 반환값과 타입이 일치해야 함. (or 자동형변환 가능한 값)

  2. 호출 스택(call stack)

  • 스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓인다.꺼낼 때는 위에서부터 꺼냄.
  • 호출 스택 :
    1) 메서드 수행에 필요한 메모리가 제공되는 공간. 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제.
    2) 제일 위에 있는 메서드가 현재 실행중인 메서드, 나머지는 대기중. 아래의 메서드가 바로 위의 메서드를 호출한 메서드.
    3) 반환타입이 있는 메서드는 종료되면서 결과값을 자신을 호출한 메서드(caller)에게 반환함. - 대기 상태에 있던 호출한 메서드(caller)는 넘겨받은 반환값으로 수행을 계속 진행함.
profile
sim

0개의 댓글