Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

메서드 본문

프로그래밍 언어/Java

메서드

세레프 2023. 4. 4. 05:08

 프로그램에는 여러 명령어와 문법으로 이뤄져 있으며, 이를 통해 문제를 해결하는 알고리즘을 만든다. 이러한 알고리즘도 여러개의 명령을 경우에 따라 중복해서 사용해야 하는 경우가 있는데, 이러한 상황을 해결하는 방법이 메서드이다.

 

 

메서드 정의와 구조

 메서드는 여러 명령들의 나열된 묶음으로, 입력값을 받아서 내부에서 처리 후 결과를 출력 또는 반환하는 역할이다. 즉 C언어에서 말하는 함수가 Java에서는 메서드라고 한다.

 일단, 메서드를 정의할 때는 클래스 안에서 정의해야 한다. 그래서 main메서드나 다른 메서드에서는 정의를 할 수 없다. 

 

 메서드는 메서드를 제작하고 정의하는 선언부, 메서드를 호출하여 사용하는 호출부로 나눠져 있다. 

선언부 호출부
반환형 메소드 명 (매개변수1,매개변수2....){

명령1;
명령2;
...
return 리턴값
}
메서드명( 값 ) ;
  • 반환형: 메서드의 모든 명령 실행 후 메서드가 갖게 될 결과값(리턴값)의 형식을 정하는 타입, void와 정수형, 실수형만 반환형으로 사용할 수 있다.
  • 매개변수: 함수의 호출부에서 구현부에 전달하고 싶은 값을 저장하기 위한 변수
  • return: 호출된 메서드가 실행이 끝난 뒤, 메소드가 가질 값으로, 리턴값은 main메서드에서의 해당 함수의 결과값으로 반환된다. 이때 return값은 하나만 존재할 수 있으며, 변수, 연산식, 숫자가 리턴값으로 올 수 있다.

 

 JVM의 실행 순서는 main메서드의 블록의 실행을 시작으로, 호출부가 있을 경우, 해당 메서드의 선언부를 호출하여 메소드의 블록을 실행한다.  이때, return이 있을 경우, 그 시점에서 해당 메서드는 종료되고 다시 main메서드로 돌아온다.

package pack0404;

public class Code1 {
	
	static void call(int a) {
		
		System.out.println("call :"+a);
	
	}

	public static void main(String[] args) {
		
		call(100);
		System.out.println(call2());
	
	}
	
	static int call2() {
		
		System.out.print("call2:");
		return 100;
		
	}

}

 

 "call"메서드는 반환형이 void로, 리턴값을 받지 않는 반환형이다. 그래서 해당 메서드의 블록엔 return값이 존재하지 않는다. 추가적으로 "call"메서드는 정수형 매개변수를 받는다. 이는 호출부에 값을 넣으면, 매개변수에 저장이 되며, 매개변수를 통해 해당 메서드를 실행한다.

 

 "call2"메서드는 반환형이 정수형으로, 리턴값을 받는 반환형이다. 그래서 해당 메서드의 블록에는 return값이 존재하며, 해당 메소드가 종료하면, main메소드에는 해당 메소드의 값이 리턴값이 되는것을 알 수 있다.

 

메소드 사용이유

 프로그래밍에서 메서드를 사용하는 이유는 자주 사용하는 여러 명령어들을 묶어놓고 상황에 따라 해당 명령어들을 사용하기 위해서 사용한다.

 

예를 들어, 사각형의 넓이를 구하는 코드가 있다고 하자.

package pack0404;

import java.util.Scanner;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a,b,area;

		System.out.print("한면의 길이:");
		a = sc.nextInt();
		System.out.print("한면의 길이:");
		b = sc.nextInt();
		
		area = a*b;
        
		System.out.print("넓이:"+area);
	}
}

 1개의 사각형의 넓이를 구하면 상관이 없지만, 경우에 따라 여러 개의 사각형의 넓이를 구한다고 한다면, 메서드를 해당 코드를 하나하나씩 사용해야 한다. 그렇게 되면, 코드의 길이가 길어져서 가독성에 문제가 있다. 그래서 코드의 일부를 함수로 만들어서 사용하는 것이다. 

package pack0404;

import java.util.Scanner;

public class Code3 {
	static int sqcal(int a, int b) {
		
		int area = a*b;
		return area;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a,b,area;

		System.out.print("한면의 길이:");
		a = sc.nextInt();
		System.out.print("한면의 길이:");
		b = sc.nextInt();
		
		area = sqcal(a,b);
		System.out.print("넓이:"+area);
	}
}

 이렇게 위의 코드처럼 메서드를 정의해 놓으면, main메서드에 해당메서드를 호출하는 것만으로 쉽게 코딩할 수 있게 된다.

'프로그래밍 언어 > Java' 카테고리의 다른 글

객체 지향 프로그래밍  (0) 2023.04.06
메서드 오버로딩  (0) 2023.04.05
배열 지원 함수  (0) 2023.03.31
다차원 배열  (0) 2023.03.30
배열  (0) 2023.03.28
Comments