● Function = 함수 = 처리자(Processor)

 

● 목적: 코드를 간략히 함, 동일한 처리 코드를 집약적으로 작성

 

● 기본적인 구조

구성요소1) 매개변수 (=parameter, 인수, 인자)

구성요소2) 함수 내부에서 처리되는 로직

구성요소3) return 값 (=return value, 돌아오는 값)

 

* 파라미터와 return 값은 없을 수도 있다.

* return 값이 없는 것을 void라고 한다.

 

● 가능한 함수의 선택지

- 매개변수 X, 리턴값 X

- 매개변수 O, 리턴값 X

- 매개변수 X, 리턴값 O

- 매개변수 O, 리턴값 O

 

가능한 매개변수의 개수?

- 0개 ~ 약 20개 이상?

가능한 리턴값의 개수?

- 대체로 없거나 1개임 (but 예외가 존재)


코드 예시 1: 매개변수와 리턴값이 모두 없는 함수 (void형 함수)

public class MainClass {
    public static void main(String[] args) {
        
        // 함수 호출
		function();
    }
    
    // 매개변수, 리턴값이 모두 없는 함수
    static void function() {
    	System.out.println("function의 내부 처리중");
    }
}

실행결과

 

  코드 예시 2: 매개변수가 있고, 리턴값이 없는 함수

public class MainClass {
    public static void main(String[] args) {
    	
        // 함수 호출부
        int n = 123;
        function(n); 
        	// 여기서의 n은 argument이다. 실제 넘겨주는 값이고, 이것은 parameter와는 다르다.
        
        System.out.println("main 함수 복귀: n -> " + n);
    }

    static void function(int n) { 
    	// 12줄에서 선언된 int n이 Parameter이다. 
        // 가인수이기 때문에 이름 중복을 신경 쓸 필요 없음.
        
        n = 234;
        System.out.println("function 함수 내부: n -> " + n);
    }
}

 

 

실행결과

 

 

 코드 예시 3: 매개변수와 리턴값이 모두 있는 함수

public class MainClass {
    public static void main(String[] args) {

        // 함수 호출 (1) -> 리턴된 값을 바로 출력 구문으로 받음
        System.out.println(toLowerChar('A'));

        // 함수 호출 (2) -> 리턴된 값을 변수에 저장하여 출력함
        char output = toLowerChar('B');
        System.out.println(output);
    }

    // 영어 대문자를 입력받으면, 소문자로 변환해주는 함수
    // 매개변수 1개, 리턴 값 1개 (char)
    static char toLowerChar(char c) {
        // ASCII 코드 값을 이용함
        // 대문자 'A' === 65, 소문자 'a' == 97
        int cValue = (int)c;
        cValue += 32;

        return (char)cValue;
    }
}

실행결과

 

 

+ Recent posts