국비지원수업

JAVA/자바[4일차](1)-메소드란?, 메소드 구조, 메소드 사용법

둥구는 지굴다 2022. 10. 25. 20:06

안녕하세요 오늘은 수업에서 배운 내용인 자바에서의 메서드에 대해 정리해봤습니다.!!

메서드란?

메서드란 어떠한 문제를 처리하기 위한 방법을 소스 코드로 묶어 놓고 필요할 때 호출하는 기능.

메서드의 구조

public static void methodName(int a, double b){ 
	//실행할 내용
	 return 값;
}

메서드는 크게 접근제어자, 반환 타입, 메서드 이름, 매개변수, return으로 이루어져 있습니다.

접근 제어자

⇒ 해당 메서드에 접근할 수 있는 범위를 명시해 놓은 것입니다.

반환 타입(return type)

⇒ 메서드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시

예를 들어 void는 데이터 반환 값이 없다는 것이고 int가 온다면 정수형 데이터 타입을 반환하겠다는 뜻

메서드 이름

⇒ 메서드 이름은 사용자가 정의할 수 있습니다.

매개변수 목록(parameters)

⇒메서드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시해놨습니다.

메서드의 사용 이유

메서드는 왜 사용될까요?

밑에 예시 코드를 하나 보면 1~10까지 출력을 하는 코드를 작성했습니다.

1~10까지 출력하는 코드를 계속해서 출력을 하고 싶습니다.

그런데 어차피 1~10까지 출력하는 내용은 똑같은 건데 저 내용을 모아두어서 조금 더 짧게 바꿀 수 있지 않을까요?

메서드를 사용하지 않고 1~10까지 출력

public static void main(String[] args) {
		System.out.println("1");
		System.out.println("2");
		System.out.println("3");
		System.out.println("4");
		System.out.println("5");
		System.out.println("6");
		System.out.println("7");
		System.out.println("8");
		System.out.println("9");
		System.out.println("10");
	}

따라서 메서드의 사용 이유 중 핵심은 중복되는 코드의 반복적인 프로그래밍을 피할 수 있죠!

그리고 모듈화로 인해 가독성은 훨씬 좋아집니다. 

추가적으로 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 굳이 해당 코드로 가지 않고도 메서드의 내부를 수정하면 되는 유지보수도 용이하게 되는 것이지요!

메서드를 사용하여 1~10 5번 출력

메서드를 사용하지 않고 1~10을 출력하는 문장을 출력하려면 총 50줄을 작성해야 합니다.

하지만 위의 기능을 메서드를 만들어 정의해 두었다면? 아래와 같은 5줄의 코드로 줄어듭니다.

	public static void main(String[] args) {
		print();
		print();
		print();
		print();
		print();
	}
	public static void print() {
		System.out.print("1");
		System.out.print("2");
		System.out.print("3");
		System.out.print("4");
		System.out.print("5");
		System.out.print("6");
		System.out.print("7");
		System.out.print("8");
		System.out.print("9");
		System.out.print("10");
		System.out.println();
	}
}

메서드의 호출

메서드의 호출은 반드시 main메서드 안에 호출해야 합니다.

public static void main(String[] args) {
		method();
	}

위의 형태처럼 메서드의 이름과 소괄호를 작성해주어야지 메서드가 호출(실행)됩니다.

반환 타입과 매개변수가 없는 메서드 예시 코드

public static void methodA() {  //1)메소드 이름 정하기=> methodA
		//2)실행할 내용 작성
		System.out.println("methodA( )실행결과.");
	}

void는 리턴 값이 없다는 것입니다.

매개변수를 사용한 메서드 예시 코드

메서드 정의

public static void methodB(int n1,int n2) { 
//데이터를 전달해서 메소드 실행 내용을 다르게 할수 있습니다.
//int n1과 int n2와 같은 값을 형식매개변수라고 부릅니다.(값이 아직은 없는 상태입니다.)
		System.out.println("methodB( )실행결과.");
		System.out.println("n1 ="+n1+",n2="+n2);
		System.out.println("n1+n2="+(n1+n2));
	}

이번에는 위의 매개변수가 없는 메서드와는 다르게 int n1, n2라는 정수형 매개변수를 넣어보았습니다.

이렇게 매개변수를 선언하였다면 메인 함수의 호출부에서 값을 받아와 메서드 내에 있는 n1, n2변수에 대입하여 값을 사용할 수 있습니다.

public static void main(String[] args){
methodB(13,45); //13과 45를 인자값으로 받아와 methodB의 형식 매개변수 즉, n1,n2로 전달됨
}

출력 결과

methodB 정의되어있는 출력문과 n1, n2에 각각 13과 45가 전달되어 계산식이 출력된 것을 확인할 수 있습니다.

메서드 안에 return을 사용하여 데이터를 반환해보기

public static int methodC() {  //리턴값의 형식은 methodC( )에서는 int
		System.out.println("methodC( )실행결과.");
		return 999;
	}

이번에는 return을 한번 사용해 보겠습니다.

return값을 사용하려면 데이터 반환 타입 자리에 return값의 데이터 타입과 일치해야 합니다.

따라서 저희는 999라는 정수 값을 반환할 것이기 때문에 데이터 반환 타입에 int를 작성해 준 것입니다.

여기서 return값을 반환한다는 것은 메서드를 호출한 곳으로 반환을 하는 것입니다.

메서드 호출

public static void main(String[] args){    
		System.out.println("methodC메소드 리턴값"+methodC()); //methodC()호출 및 출력
		int result=methodC(); //methodC( )리턴 값 resutl변수에 저장
		System.out.println("methodC 메소드 리턴값:"+result); //resutl 값 출력
}

 

 

위의 코드에서 알 수 있듯이 메서드의 return값은 변수에도 담을 수 있습니다.

출력 결과

오늘은 이렇게 배운 내용 정리해 보겠습니다.

이상으로 글 읽어주셔서 감사합니다.!!