🔥 메소드란? 메서드의 선언부와 구현부
- 메소드란? 문장들을 묶어 놓은 것.
- 프로그램에서는 코드의 중복을 좋아하지 않고, 제거하려고 함.
- 그래서 그걸 별도의 메서드로 만들어! 그리고 이름을 붙여줘.
- 그리고 그걸 불러서 써 -> 메서드 호출(사용)
- 작업단위로 문장들을 묶어서 이름을 붙인 것 ! = 메소드
- 값(입력)을 받아서 처리하고, 결과를 반환(출력)
- 메서드 - 객체지향 개념에서 함수를 지칭함
- 메서드는 클래스 안에 있어야 해 / 함수는 그런 제약이 없음!! 독립적
- 작업에 필요한 값들을 받아서 그 결과를 반환해줘 ~
- 상자에서 무슨일 하는지 알아야돼? 몰라도됨 / 블랙박스라고 하기도 함
✓ 메소드의 장점
- 코드의 중복을 줄일 수 있다.
- 코드의 관리가 쉽다.
- 코드를 재사용 할 수 있다.
- 코드가 간결해서 이해하기 쉬워진다.
✓ 메서드의 작성
- 반복적으로 수행되는 여러 문장을 메소드로 작성
- 하나의 메서드는 한가지 기능만 수행하도록 작성
메소드 = 선언부 + 구현부
반환타입(작업결과 타입) 메서드 이름 (타입 변수명, 타입 변수명, ...) -> 선언부
int add (int a, int b)
{
int result = a+b;
return result; //호출한 메서드로 결과를 반환한다.
} -> 구현부 // 메서드 호출시 수행될 코드
반환은 -> 입력값은 여러개 될 수 있지만 출력값은 0개 혹은 최대 1개 !!
작업 결과가 여러개면? -> 배열을 이용하거나, 객체로 묶어서 // 앞으로 나올거얌
다음!
메서드의 구현부
지역변수 : 메서드 내에 선언된 변수 (메서드 영역)
메서드가 종료되면 모두 사라져 ~
따라서 서로 다른 메서드에서는 변수이름 똑같아도 상관 없슈
🔥 메서드의 호출
- 메서드 이름(값1, 값2, ...); //괄호안에는 작업에 필요한 값들 적으면 됨, 없을 땐 안쓰면 돼
- 반환타입 void 는 출력이 없다 !!! // 작업을 수행하고 줄 결과가 없음 , 돌려줄 게 없다.
- 보이드가 아닌 경우는 대입연산자, 변수를 써써 결과를 변수에 저장하는 식으로! ( int result = add(3,5); )
- 중간 역할 , 중간 매개체라는 말을 해서 매개변수 (parameter)
- 메서드는 클래스 영역에만 정의 가능!
✓ 메서드의 실행흐름
- 객체 생성
- 메서드 호출(작업시 필요한 값도 줌)
- 메서드 실행
- 메서드 종료시 작업 결과 반환 / 호출한 곳으로 돌아감 (결과값을 가지고)
- 대입
🔥 return문
- 실행중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
- 메서드가 작업을 마쳤을 때 , 써줘야하지만 반환타입이 void인 경우는 생략가능. 컴파일러가 자동추가 !!
- 반환타입이 void가 아니면 반드시 return문 필요!
- 메서드 조건식일 경우! - 조건이 참, 거짓일 때를 다 써줘야함
- 반환타입이 보이드 아니면 리턴 타입이 일치해야하고, 혹은 자동형변환 되는 애여야함!
🔥 호출스택 (call stack)
- 호출스택은 모든 프로그래밍 언어에서 공통적이고 매우 중요한 개념
- stack : 밑이 막힌 상자. 위에 차곡차곡 쌓인다.
- 집어넣은 순서대로 차곡차곡 쌓여요.
- 꺼낼 때는 제일 위에 있는걸 꺼내요.
- 순서대로기때문에 중간에 뭘 끼우거나 맨아래거 먼저 빼기 불가능!
- 메서드 수행에 필요한 메모리가 제공되는 공간
- 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
- 아래있는 메서드가 위의 메서드를 호출한 것
- 하나의 스택에서는 맨 위 하나의 메서드만 실행중. 나머지는 대기중!
🔥 기본형 매개변수
- 메소드의 변수 타입이 기본형!
- 기본형 맴개변수 - 변수의 값을 읽기만 할 수 있다.(read only)
- 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다.(read & write)
🔥 참조형 매개변수

- 그림을 보고 잘 이해해봅시다.
- 반환타입이 참조형이라는 것은? - 객체의 주소를 반환한다. (객체를 반환)
남궁석의 정석코딩 / 자바의 정석 유튜브 참고