본문 바로가기
공부/java

자바(java)의 함수 종류

by 샤샤샤샤 2022. 11. 25.

함수: 코드의 뭉치(블록)

함수를 사용하면 중복되는 코드를 줄일수 있으며 가독성이 향상된다.

함수는 입력값(매개변수)와 출력(반환값)이 존재할수 있다.

함수는 그 자체로는 자동호출이 되지 않으며, 동작시키기 위해서는 따로 불러와야만 한다.

 

함수의 4가지 형식

1. 매개변수 x, 반환값 x

2. 매개변수 0, 반환값 x

3. 매개변수 x. 반환값 o

4. 매개변수 o, 반환값 o

 

1.

 static void func1( ){
        System.out.println("func1 호출 완료");
        return; // 생략가능. 어차피 반환값이 없으니까.
//        System.out.println("");  도달불가 에러!
    }

void는 리턴값이 없는 함수를 뜻한다. 따라서 return;문은 생략해도 무방하다.

리턴값이 없기에 출력문에 넣을수 없으며, 함수를 실행하면 그 과정의 일부로 출력문이 나온다.

 func1();    결과: func1 호출 완료

 

2.

 // 2. 매개변수가 O, 반환값 X
    static void func2 ( int param ){
        // 매개변수는 지역변수(동적변수)이므로 func2함수를 나가면 소멸
        System.out.println("func 2 호출됨");
        System.out.println("매개변수 param" + param);
        return; // 함수가 종료되면 자신이 호출된 곳부터 코드를 읽어나간다.
    }

매개변수는 오직 이 함수에서만 유효하다.

이 함수 역시 글씨가 출력되기는 하지만, 이는 결과값이 아닌, 결과를 꺼내오는 과정에서 나오는 부산물이다.

이해하기 쉽게 함수를 공장이라고 비유해보자. 매개변수는 원자재이고, 리턴값은 완성품이다. 그리고 리턴값이 아닌데 출력되는 문장은 공장에서 뿜어져나오는 연기같은 거라고 생각하면 편하다.

 

3.

// 3. 매개변수가 X, 반환값 O
    static int func3(){
        System.out.println("func3 호출됨");
        return 40;
    }

 

4.

 // 4. 매개변수가 O, 반환값 O
    static int func4(int param){
        System.out.println("func4 호출됨");
        return param*2;
    }

 

함수안에서 함수를 선언하는 것은 불가능하다.

 

static 메소드(변수) : 고정 메소드. 이 예약어가 설정된 함수는 프로그램 시작시 고정된 메모리 주소에 주소값을 설정하고,

                                 프로그램 종료시까지 변경되지 않는, 변수, 함수, 객체를 다룰때 사용한다.

                                  gc(garbage collector)의 관리를 받지 않음으로 항시 메모리를 할당받고 있으며, 덕분에 따로 객체

                                  설정을 하지 않아도 static 자원에 접근 가능하다. 자주 쓰이는 변수나 메소드에 설정한다.

new : 새로운 객체(인스턴스)를 만들기 위한 예약어. static과 반대로 이 예약어로 호출된 객체는 소멸이 자주 일어난다.

public class ex66 {
    public static void main(String[] args) {
        // 함수 (메소드) Function(Method)

        // 코드 중복을 제거하는 방법
        // 1. 반복문을 사용한다.
        // 2. 배열을 사용한다.
        // 3. 함수(메소드)를 사용한다.
        // 4. 클래스(변수 + 함수)를 사용한다.

        // 함수란? Function - 자바: Method

        // 함수 : 코드 뭉치(블록)이다.
        //     : 이름을 붙이고(가독성 향상), 다른 호출(실행)시킬 수 있다.
        //     : 입력(매개변수)와 출력(반환값)이 있다.

        // 함수의 선언부 형식 - 자동호출이 안됨!!
        // 반환형 : void(반환값이 없을때만 사용) int long String ...
        // 반환형 함수이름( 매개변수 타입 매개변수 이름 ){
        //    실행문;
        //    return;    // 함수종료
        //    return 반환값;   // 반환값을 호출부에 전달하면서 함수 종료
        // }

        // 함수의 실행부(호출) 형식
        // 함수이름();    -    매개변수가 없을 경우
        // 함수이름( 매개변수 );
    }
}
public class ex67 {

    // 함수 안에서 함수 선언은 안됨!
    // static 메소드에서는 static함수만 호출 가능!
    // static 정적(고정된) : 프로그램 시작시 고정된 번지에 주소값을 설정하고,
    //                     프로그램 종료시까지 변경되지 않는 변수, 함수, 객체에 사용.(final같은건가?)
    // 용도 : main함수 호출시(고정된 주소)
    //       안정된 데이터를 우지하기 위해서 (동적 데이터 - new/소멸이 자주 일어남)


    // 반환형   함수 이름 ()
    static void printString(){
        System.out.println("하이 메소드~");
        return; // 함수 종료 - 끝줄에서는 생략가능
    }


    public static void main(String[] args) {
        System.out.println("메인 strt~");
        // 함수 호출
        printString();
        System.out.println("메인 end~");
    }
}
public class ex68 {
    // 함수 선언/ 호출의 4가지 형식
    // 선언부
    //      입력        출력
    // 1. 매개변수가 X, 반환값 X
    static void func1( ){
        System.out.println("func1 호출 완료");
        return; // 생략가능. 어차피 반환값이 없으니까.
//        System.out.println("");  도달불가 에러!
    }
    // 2. 매개변수가 O, 반환값 X
    static void func2 ( int param ){
        // 매개변수는 지역변수(동적변수)이므로 func2함수를 나가면 소멸
        System.out.println("func 2 호출됨");
        System.out.println("매개변수 param" + param);
        return; // 함수가 종료되면 자신이 호출된 곳부터 코드를 읽어나간다.
    }
    // 3. 매개변수가 X, 반환값 O
    static int func3(){
        System.out.println("func3 호출됨");
        return 40;
    }
    // 4. 매개변수가 O, 반환값 O
    static int func4(int param){
        System.out.println("func4 호출됨");
        return param*2;
    }


    public static void main(String[] args) {
        // 호출부
        // 1. 매개변수가 X, 반환값 X
        func1();
        // 2. 매개변수가 O, 반환값 X
        func2(30 );
        // 3. 매개변수가 X, 반환값 O
        int result = func3();
        System.out.println("반환값: " + result);
        System.out.println(func3());
        // 4. 매개변수가 O, 반환값 O
        result = func4(10);
        System.out.println(result);
        System.out.println(func4(10));

    }
}

 

 

'공부 > java' 카테고리의 다른 글

자바(java)의 객체의 다형성  (0) 2022.11.29
자바(java)의 클래스  (1) 2022.11.28
자바(java) 문제 풀이 복습  (0) 2022.11.25
자바(java)의 최대, 최솟값 찾기  (0) 2022.11.23
자바(java)의 문자열 관련 함수  (1) 2022.11.22