20230217 [Java] 메서드와 매개변수

Daisy🌷·2023년 2월 17일
0

메서드 (Method)

  • 다른 프로그래밍 언어에는 함수라는 것이 별도로 존재한다. 하지만 자바는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다.
  • 자바는 이러한 클래스 내의 함수를 메서드라고 부른다.
  • 입력을 가지고 어떤 일을 수행한 다음에 결과물을 내어놓는 것, 이것이 메서드가 하는 일이다.

메서드를 사용하는 이유?

  • 가끔 프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을 발견할 때가 있다. 이 때가 바로 메서드가 필요한 때이다. 여러 번 반복해서 사용된다는 것은 언제고 또다시 사용할 만한 가치가 있는 부분이라는 뜻이다. 즉, 이러한 경우 이것을 한뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 리턴값을 돌려준다"라는 식의 메서드를 작성하는 것이 현명한 일일 것이다.

매개변수(parameter)와 인수(arguments)

  • 매개변수 : 메서드에 전달된 값을 저장하는 변수
  • 인수 : 메서드에 전달하는 값
public int add (int a, int b) {
    return a + b;
}
  • 위의 코드에서 int a와 int b가 나타내는 것은 매개변수를 의미하는 parameter이다.
add(3, 4);
  • 방금 선언한 add 메서드를 실행한 문장이다. 여기서 3, 4는 인수를 의미하는 argument이다. argument는 실제 메소드가 호출될 때 매개변수에 담기는 값이다.

자바의 메서드 구조

리턴자료형 메서드명(입력자료형1 매개변수1, 입력자료형2 매개변수2, ...) {
    ...    
    return 리턴값;  // 리턴자료형이 void 인 경우에는 return 문이 필요없다.
}
  • 리턴자료형은 메서드 수행 후 돌려줄 값의 자료형을 의미한다.
  • 메서드의 리턴값은 return 이라는 명령을 사용한다.

매서드 내에서 선언된 변수의 효력 범위

  • 메서드 안에서 사용하는 변수의 이름을 메서드 밖에서 사용한 이름과 동일하게 사용한다면 어떻게 될까?
public class Sample {
    void varTest(int a) {
        a++;
    }
    public static void main(String[] args) {
        int a = 1;
        Sample sample = new Sample();
        sample.varTest(a);
        System.out.println(a);
    }
}
  • 위 코드의 varTest 메서드는 입력으로 들어온 int 자료형의 값을 1만큼 증가시키는 역할을 한다.
  • main 메서드를 순서대로 분석해보자.
    먼저 main 메서드에서 a라는 int 자료형의 변수를 생성하고 1을 대입했다. 그리고 varTest 메서드를 입력 값 a를 주어 호출했다. 그 다음에 a의 값을 출력하게 하였다. 당연히 varTest 메서드에서 a의 값을 1만큼 증가시켰으니 2가 출력되어야 할 것 같지만 프로그램을 실행시켜 보면 1이라는 결과 값이 나온다.
    그 이유는 메서드에서 사용한 매개 변수는 메서드 안에서만 쓰여지는 변수이기 때문이다.
profile
티스토리로 블로그를 이전했습니다. 😂 구경 오세요! 👉🏻 https://u-ryu-logs.tistory.com

0개의 댓글