Search
Duplicate
🤔

무엇이 매개변수(parameter)이고 무엇이 인수(argument)인가?

혼돈의 매개변수와 인수간의 호칭

잘 알고 쓰는 사람도 많지만, 코드를 설명하거나 할 때 이 매개변수와 인수라는 용어의 차이를 구분하지 못해서 단어가 계속 뒤섞이고 혼동해서 사용하는 개발자들이 많다. 다음 코드를 보며 얘기를 해보자.
public class TestClass{ public void execute(Collection<Integer> list){ for(Integer num : list){ System.out.println("num: "+ num); } } } public class Main { public static void main(String[] args){ TestClass tc = new TestClass(); List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); tc.execute(list); } }
Java
복사
여기서 로직을 설명할때 Collection<Integer> list는 인수일까 매개변수일까? 그리고 tc.execute(list)부분의 list는 인수일까 매개변수일까?

매개변수는 메서드 선언에 정의한 변수

인수는 메서드 호출 시 넘기는 실제 값

즉, Collection<Integer> list는 매개변수가 되고, main 로직안의 list는 인수값이 된다.
그래서, 매개변수 타입은 Collection 이라 하고 인수 타입은 List라고 불러야 함이 맞다.
보통은 이 두 개의 단어를 명확하게 구분하지 않고, 다들 적당히 섞어서 말해도 알아서 이해하기에 크게 신경쓸 내용은 아니지만, 나 역시 포스팅을 하고 얘기를 할 때 이 두 단어가 계속 섞이면서 반대로 말하는 경우도 많았다.
자바 언어 명세에서는 위와같이 정의를 했으니, 소소하지만 헷갈리지 말고 사용하도록 하자.