Day 18

ChangWoo·2023년 4월 22일
1

자바의 정석

목록 보기
18/71

ch 6-14~16 메서드란? , 메서드의 선언부와 구현부

메서드란?

1. 문장들을 묶어놓은 것.
- 작업단위로 문장들을 묶어서 이름 붙인 것

  • 첫 번째 : 배열을 초기화
  • 두 번째 : 배열을 출력
  • 세 번째 : 배열을 출력
  • 두 번째 & 세 번째 : 코드 중복 -> 중복을 제거해야 한다.
  • 별도의 메서드를 만들어 배열 출력을 담는다. (printArr=메서드명)
  • 메서드호출(사용) -> 위의 두 번째와 세 번째가 줄어들고 중복이 제거된다.

2.값(입력)을 받아서 처리하고, 결과를 반환(출력)

  • 작업에 사용할 값을 받아서 연산하고 결과를 반환한다.
  • 메서드와 함수는 같지만, 메서드는 클래스에 종속적 / 함수는 클래스에 독립적이라는 차이가 있다.

메서드의 장점

  • 코드의 중복을 줄일 수 있다.
    • 코드의 관리가 쉽다.
    • 코드를 재사용할 수 있다.
    • 코드가 간결해서 이해하기 쉬워진다.

메서드의 장점 - 중복코드제거, 관리 용이, 재사용가능

  • 왼쪽의 중복 코드를 제거할 수 있다.
  • 하나의 메서드에서만 관리하면 되므로 관리가 용이하게 된다.
  • 메서드를 다른 프로그램에서도 재사용가능하다.

메서드의 작성

  • 반복적으로 수행되는 여러 문장을 메서드로 작성
    • 하나의 메서드는 한 가지 기능만 수행하도록 작성
  • 배열 초기화 하는 문장과 배열 출력하는 문장을 같이 사용하면 X!!

메서드 = 선언부 + 구현부

  • 선언부의 여러개의 타입변수명은 매개변수 목록이라 하며, 입력(작업 필요한)값들을 적는다.(0~n개까지 가능하다.)
  • 선언부의 반환타입은 작업결과의 타입이다.
  • 구현부는 메서드 호출시 수행될 코드이다.
    Ex)
  • 입력 값은 0~n개 가능하나, 출력 값은 0~1개 가능하다.
  • 출력 값을 여러 개 얻고 싶을 때는 배열을 이용하거나, 객체를 이용해야 한다.
  • 반환할 값(출력 값)이 없을 때에는 반환 타입(출력)에 아무것도 없다는 뜻의 void를 적는다.

메서드의 구현부

지역변수(lv) : 메서드 내에 선언된 변수

  • 지역 변수 = x,y,result
  • x,y = 매개변수(입력값을 받는 변수)이기도 하다.
  • 지역변수는 메서드 끝날때까지 유효하다.(메서드 종료시 사라진다.)
  • 두 영역이 겹치지 않으므로 이름이 같아도 괜찮다. (밑의 x,y와 밑의 x,y는 다른 것이다.)

ch 6-17~19 메서드의 호출, 메서드의 실행흐름

메서드의 호출 (Method Call)

  • 메서드를 작성해도 혼자서 자동적으로 작업을 하지 않으므로 메서드 호출 작업이 필요하다.
  • 메서드 호출은 메서드를 불러와 작업을 시키는 것.
    메서드이름(값1, 값2, (작업에 필요한 값들).....)' // 메서드를 호출하는 방법
    Ex) print99danAll(); // void print99danAll()을 호출
    int result = add(3,5); // int add(int x, int y)를 호출하고, 결과를 result에 저장
  • x에 3이, y에 5가 대입되고 result에 연산결과가 대입된다. (그래서 반환타입 int를 사용)
  • print99danAll은 void 타입이므로 출력할 값이 없다.
  • void가 아닌 경우에는 대입연산자와 변수를 사용해서 값을 저장한다.
  • 매개변수(parameter,복사본) - 메서드에서 호출한 값을 연산자에 대입하는 중간역할을 한다.

메서드의 실행흐름


1. main 메서드에서 메서드 add를 호출한다. 인수 1L과 2Ldl 메서드 add의 매개변수 a,b에 각각 복사(대입)된다.
2. 메서드 add의 괄호{}안에 있는 문장들이 순서대로 수행된다.
3. 메서드 add의 모든 문장이 실행되거나 return문을 만나면, 호출한 메서드(main메서드)로 되돌아와서 이후의 문장들을 실행한다.

profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글