본문 바로가기

JAVA/기본

메소드 - method (함수)

메소드 - method (함수)

 

자주 사용하는 코드를 메소드로 만들면 귀찮게 반복해서 계속 작성 안해도 됨

 

예시)

0~10 까지 총 5번 나오게 출력 하고 싶어요

public class zzzz {                     // 무조건 클래스 파일 안에 입력
    
    //메소드 배우기 전 main만 사용 했지만 메소드를 배웠으니 main 자리에 메소드 명을 입력
    public static void numbering() {
        for (int i = 0; i < 11; i++) {  //for문으로 0~10 까지 입력되게
            System.out.println(i);     //0~10까지 출력되게
        }
    }

    public static void main(String[] args) {  //main메소드에서 무조건 값이 출력되게 약속 되어 있음
        numbering();                         //메소드를 불러올려면 메소드명();
        numbering();
        numbering();
        numbering();
        numbering();
    }
}
//0
//1
//...
//10
//총 5번 출력됨

 

*class 파일 안에 입력

*main 메소드에서만 출력이 가능


입력값 - parameter (매개변수)

public class zzzz {

    //numbering 메소드 () 안에 매개변수(parameter) 를 추가 함으로써 인자 값에 맞게 입력 됨
    public static void numbering(int num) {
        int i = 0;
        while (i < num) {         //num => 매개변수(parameter)
            System.out.println(i);
            i++;
        }
    }

    public static void main(String[] args) {
        numbering(2);         //numbering 메소드 () 안에 값을 인자라고 하고 인자 값에 넣으면 매개변수가 바뀜

    }
}

 

그림으로 설명하자면 아래와 같다

 

 

출력값 - return

public class zzzz {
    public static String numbering(int num, int limit) {
        int i = num;
        String Number = "";   //만들어지는 숫자를 Number 변수에 담기 위해 변수에 빈 값을 준다.

        while (i < limit) {
            Number += i;     //i의 값이 Number에 더해진다 ""+i => "i" 이렇게 빈 값 안에 i값이 들어간다.
            i++;
        } return Number;    //Number 변수에 담긴게 필요하니깐 Number를 return 한다.
    }

    public static void main(String[] args) {
        String result = numbering(1, 5);
        System.out.println(result);

    }
}

 

위 코드를 좀 더 자세히 알아보자

 

return 값은 메소드의 타입(String, Integer ...)이랑 같아야 한다.

*String으로 했으면 문자열로 출력 해야하고, Integer로 했으면 정수 값으로 출력 해야 실행된다.

 

return을 만나면 메소드는 종료 된다. 

 

배열도 사용 가능

public class zzzz {
    public static String[] setname() {
        String[] setnames = {"김대한", "홍민국", "최만세"};
        return setnames;
    }

    public static void main(String[] args) {
        String[] name = setname();
        System.out.println(name[0]);
    }
}

 


main 영역 밖에 메소드에 static을 사용하는 이유

저장영역
1. 데이터 영역: 변수, 지역변수 / {}가 끝나면 사라짐

2. static 영역: 정적(고정) 영역 / 프로그램 끝날때 까지 기억

3.힙 영역: 동적 영역 / 예) 배열 / 필요에 따라 저장

main 밖에서 static을 작성 해야 메소드를 찾을 수 있고 만약 static 쓰기 싫으면

main 영역 안(프로그램 동작영역)에서 작성

반응형

'JAVA > 기본' 카테고리의 다른 글

유효범위 - 전역변수, 지역변수  (0) 2022.11.04
클래스 멤버와 변수, 인스턴스 멤버와 변수  (0) 2022.11.03
객체, 클래스, 인스턴스  (0) 2022.11.01
this  (0) 2022.11.01
기본 문법 / 작동 순서  (0) 2022.10.26