본문 바로가기
[JAVA]/[자바 기초]

[자바 기초] 함수와 메서드

by 북방바다코끼리표범 2023. 7. 28.

복습

https://shins99.tistory.com/11

 

[자바 기초] 객체 지향 언어란?

복습 https://shins99.tistory.com/9 [자바 기초] 참조 자료형 - Scanner, Random 복습 https://shins99.tistory.com/8 [자바 기초] for, while 복습 https://shins99.tistory.com/7 [자바 기초] if 문 복습 https://shins99.tistory.com/6 💡

shins99.tistory.com


함수와 메서드

💡 학습 목표 

1. 함수에 대해 이해하자 . 
2. 메서드에 대해 이해하자.

함수 (Function)

● 하나의 기능을 수행하는 일련의 코드

● 구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨

● 함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음

public class 클래스명 {
	// 함수를 정의하는 코드
	// 함수 선언부
	static 반환자료형 함수명(자료형a 매개변수a, 자료형b 매개변수b 등) {
		// 함수 구현부 (body)
		코드;
		...
		retrun 반환값;
	}

	public static void main(String[] args) {
		// 함수를 호출하는 코드 
		함수명 (매개변수a, 매개변수b, ...);
	}
}

함수 정의

● 함수 선언부의 자료형에 따라 함수의 반환(return) 값의 자료형이 정해짐

→ return 키워드 입력 시, 함수 선언부의 자료형과 return 데이터의 자료형이 동일해야 함

● 함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨

 

함수 호출(invoke)

● 메인 함수 내에서 코드 작성

● positional : 매개변수의 순서를 정의한 것과 동일하게 사용해야 함

● 함수를 호출해서 변수에 저장할 때, 함수의 반환 자료형, 변수 자료형이 동일해야 함 

함수를 종료하면 실행의 제어권 반납. (값을 반환하는 함수는 해당 값을 반환)

 

함수호출 예시

public class FunctionMainTest {

	// 함수란?
	// 한번 만들어두고 재사용 하기 위해 설계를 한다.
	// 권장사항은 하나의 함수에 하나의 기능설계가 맞음
	// 실행의 제어권 반납

	// 두개의 매개 변수를 받아서 덧 셈 하는 기능을 만들기
	// 함수를 선언하는 문법
	public static int addNumber(int n1, int n2) {
		// 함수 안에 사용하는 변수는 - 지역 변수
		

		// 결과를 담을 변수를 선언
		int result;
		result = n1 + n2;

		return result;

	}

	public static double minusNumber(int n1, int n2) {

		// 결과를 담을 변수를 선언
		int result;
		result = n1 - n2;

		return result;

	}

	public static void main(String[] args) {

		int returnValue = addNumber(10, 5); // 함수를 호출하는 문법
		System.out.println(returnValue);

		int returnValue2 = addNumber(100, 7895);
		System.out.println(returnValue2);

		double returnValue3 = minusNumber(5, 100);
		System.out.println(returnValue3);
		// 함수 호출할 때는 모양 맞추기 이다.
		
	} // end of main

} // end of class

함수의 종류

 

값을 반환하는 함수

static 자료형 함수명 (자료형a 매개변수a, 자료형b 매개변수b, ...) {
		코드;
        ...
        return 반환값;
}

값을 반환하지 않는 함수

static void 함수명 (자료형a 매개변수a, 자료형b 매개변수b, ...) {
		코드;
        ...    
}

매개변수가 없는 함수

static 자료형 함수명 () {
		코드;
        ...
        return 반환값;
]

 

 

스택 메모리(stack)

  스택 : 함수가 호출될 때 지역 변수, 매개 변수가 사용하는 메모리

               메모리의  높은주소에서 낮은 주소 방향으로 할당됨

힙 메모리(heap)

  힙 : 객체 생성될때 저장되는 메모리, 동적 메모리 영역, 멤버변수
           메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨

메서드 (Method, 멤버 함수)

 

클래스 내부에서, 자신의 멤버 변수를 활용해서 객체의 기능을 수행하는 것

함수와 유사하지만, 보다 명확하고 구체적

중첩 메서드 구현 불가능 (메서드 안에 메서드 선언 불가)

 

메서드 구현

public class 클래스명 {

	// 상태 (멤버변수)
    자료형 멤버변수1ㅣ
    ...
    
    // 기능 (메서드)
    // 메서드 선언
    public 반환자료형 메서드1 (매개변수) { // 자료형을 특정 짓기 어려우면 임시로 void 입력
    		// 메서드 구현
            코드
          }
    ...
}

메서드 호출

public static void main(String[] args) {
		
	// 객체 생성
	클래스명 참조변수 = new 클래스명();
		
	// 객체의 멤버 변수 값 초기화
	참조변수.멤버변수1 = 값;
	...
		
	// 메서드 호출
	참조변수.멤버변수1(매개변수);
	...
}
- 클래스 내부에서 자신의 메서드를 호출할 경우 : 메서드명()