1. 자바 함수(fanction) 의 기본 구성
1) 함수(fanction) 정의
함수(fanction) 를 정의할 때는 접근 제어자, 반환 타입, 함수 이름, 매개변수 목록을 포함합니다.
예를 들어, 두 수를 더하는 함수를 정의하려면 다음과 같이 작성할 수 있습니다.

add( int num1, int num2 ) { int total = num1 + num2; return total; // 결과를 반환 ( 리턴 타입 ) } |
여기서 int는 반환값의 타입을 의미하며, add는 함수의 이름입니다. num1과 num 2는 매개변수입니다.
(1) 접근 제어자( 접근범위 )
- public : 모든 클래스에게 접근 허용
- protected : 상속 관계 클래스에게만 접근 허용
- private : 선언된 클래스에서만 허용
(2) 반환 타입( 리턴 형식 )
- 함수가 종료 후 함수를 호출 한 쪽에 특정 값을 전달 해 줄 수 있다.
(3) 매개변수와 인자
- 매개변수(Parameter): 메서드를 정의할 때 사용되는 변수로, 실제 값을 받기 위한 틀입니다.
- 인자(Argument): 메서드를 호출할 때 실제로 전달되는 값입니다.
public class Main { public static void main( String[ ] args ) { int result = add( 3, 5 ); // 3과 5는 인자 System.out.println( "Sum: " + result ); // 출력: Sum: 8 } // 두 수를 더하는 메서드 public static int add( int a, int b ) { // a와 b는 매개변수 return a + b; // 두 수의 합을 반환 } } |
2. 함수 호출
함수를 호출하려면 함수 이름과 괄호 안에 인자를 전달합니다.
예를 들어:

FuncTest func = new FuncTest(); int num1 = 3; int num2 = 5; int total = add( num1, num2 ); // add 함수 호출 return total; System.out.println( func.add(3, 5) ); // 결과 출력: 8 |

3. 스택 메모리와 함수 호출
1) 스택메모리
- 함수가 호출될 때 지역 변수들이 사용하는 메모리 공간입니다.
- 함수 수행이 끝나면 이 메모리는 자동으로 반환됩니다.
- 어휘적인 측면에서 봤을때 '스택'이라 하면, 아래서부터 순차적으로 쌓이는 것이라고 의미할 수 있습니다.
- 아래 사진은 위에서 설명드린 예제를 기반으로 한 스택 메모리 구조입니다.

① 먼저 main()함수가 사용할 메모리 공간이 스택에 생성되는데, 위의 예제에서 볼 수 있듯이, 메인 함수에 있는 num1, num2, sum 변수들의 메모리 공간이 스택에 형성 되었습니다.
② 그 후, main() 함수에서 add() 함수를 호출합니다.
③ add() 함수가 사용할 메모리 공간인 n1, n2, result 를 스택에 저장합니다.
④ add() 함수 수행 후, 사용한 메모리 공간은 자동으로 삭제됩니다. (n1, n2, result 삭제)
⑤ main()함수로 돌아와서, sum 변수에 결과값을 저장합니다.
⑥ sum 값이 print 된 후, main() 함수가 종료되면, num1, num2, sum 의 메모리 공간도 자동으로 삭제됩니다.
2) 예시
(1) 예시
조건 1. 두수의 평균을 구하라.
조건 2. 이것을 함수로 만들어서, 재활용해서 사용하자.


double avg (int num1, int num2 ){ double avg = ( num1 + num2 ) / 2.0; return avg; } System.out.println( func.avg(3 , 4) ); System.out.println( func.avg(2712 , 3874) ); |

(2) 예시
조건 1. 학생 수학 점수를 학점으로 변환하는 함수 만들기
조건 2. 수학점수가 90점 이상이면, A학점
조건 3. 80이상 90미만이면, B학점
조건 4. 나머지는 모두 C학점 이라고 리턴하는 함수.


String getGrade( int score ){ if ( score >= 90 ){ return "A학점"; } else if ( score >= 80 && score < 90 ){ return "B학점"; } else { return "C학점"; } } System.out.println( func.getGrade(100) ); System.out .println( func.getGrade(88) ); System.out .println( func.getGrade(65) ); |

(3) 예시
조건 1. 홀수 짝수 구분하는 함수
조건 2. func.isEven(13); => 홀수니까, fales
조건 3. func.isEven(20); => 짝수니까, true


String isEven( int num ) { if (num % 2 == 0) { return "true"; } else { return "fales"; } } System.out.println(func.isEven(13)); System.out .println(func.isEven(20)); or boolean i isEven( int number){ if (number % 2 == 0 ){ return true ; } else { return fales; } } |

'JAVA > 이론' 카테고리의 다른 글
25. [ JAVA ] Gette/ Setter 의미와 사용 이유 (0) | 2024.12.12 |
---|---|
22. [ JAVA ] 클래스(Class)와 객체(Instance) (0) | 2024.12.10 |
20. [ JAVA ] 배열(array) (1) | 2024.12.09 |
19. [ JAVA ] 반복문 ( For && while ) (1) | 2024.12.09 |
18. [ JAVA ] 조건문(Conditional Statements) (0) | 2024.12.09 |