Method란 무엇일까요?

Java 안에서 함수의 개념을 가지고 와서 프로그램 안에서 사용하게 해주는 것입니다. 쉽게 설명하면 입력 값이 들어 왔을 때, 결과 출력을 해준다고 볼 수 있습니다.

 

가장 기본적인 method main 이라고 합니다.

package Method;

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

 

- 자바 프로그램의 시작은 main 이라는 이름의 메소드를 실행하는 데서부터 시작 합니다.

- Method의 중괄호 내에 존재하는 문장들이 위에서 아래로 순차적으로 실행합니다.

- Main은 시작점과 종료를 실행시켜주는 함수라고 할 수 있습니다.

- Main method는 한 개만 존재해야 합니다. 

- Void : 수행이 후 아무런 값도 반환 하지 않는 method 입니다.

 

method 장점:
: 필요할 때마다 언제든지 호출해서 사용 가능합니다 또한 코드도 짧아지고, 프로그램의 가독성이 좋아지고 , 활용성이 높아집니다.

 

Method를 사용 방법

 

1) 메서드 정의

public static void gugudan(int num) {
}

1. 조건문 , 반복문을 쓸때와 같은 형태와 형식을 가지고 있습니다.  

2. public static void (       ) : 괄호의 자리는 method의 이름을 의미합니다.  

3. (    ) 괄호 안에 데이터를 넣어서 활용 가능합니다. 이 괄호의 값을 매개변수 라고 합니다.

 

추가 설명 : javac 를 통해서 컴파일을 하기 때문에 .class 라는 확장자로 저장이 되서 그 값을 컴파일해줍니다.
하지만 main 안에 있지 않으면 실행 컴파일 되지 않기 때문에 main 안에 무조건 넣어어야 합니다.

 

 

 

2) 메서드 호출 

: main 안에서 만들어준 method를 입력해준다. 

package method;

public class method 호출하기  {
	public static void main(String[] args) {
		
	edan();  -- 만들어 놓은 edan 이라는 method를 main 에서 출력해줍니다. 
	}
	
	public static void edan(){               
	for (int num = 1; num<=9; num++) {
	System.out.println("2 x" + num + " = "+ (2*num));
	}
		}	
}	

 

 

예제)  "1~100 사이의 "+num1+"의 배수이고, "+num2+"의 배수를 출력하기"

package JAVA연습;

public class JAVA연습20200421 {
	public static void main(String[] args) {
		
	study(num1,num2);
	}
	
	public static void study(int num1,int num2){
	    for(int i=1; i<=100; i++){
	    	if((i%num1==0)&&(i%num2==0)){
	    		System.out.println(i);	
	    	}
	  
	    }  
	}	
}	

study라는 method를 만들고 그 안에 for 과 if문 조건을 만들어서 사용합니다.

public static void study(int num1,int num2){ 괄호 안에 값을 테이터를 넣도록 만들어줍니다.

study(num1,num2);  num1와 num2 값에 무엇을 넣어주냐에 따라서 값이 달라집니다.

 

 

3) 메서드 안에 Return 사용하기

 

Return :  : 값을 반환 할 때만 사용하며 또 값이 없을 때 호출한 쪽으로 복귀를 시킬 때 사용합니다.

 

① 값을 반환

package return 값 반환;

public class return 값 반환 {
	public static void main(String[] args) {
		
	study(4561,325);
	int num = 0;
	num = study(4561,325); 
	
	if (num >=50000) {
		System.out.println("프로그램을 종료합니다.");
	}
	}

	public static int study(int num1, int num2){
	    int result = 0;
		result = num1 * num2 ; 
	        System.out.println(num1 + " x " + num2 + " = " + result);	
	    return result;	
	  
	    }  
	}	

- 값을 반환하기 위해서는 public static (int) study 라는 인식시켜야 합니다.  
- public static ( ) study : 괄호의 자리는 복귀할 때 반환하게 되는 자료형을 의미한다.

- void : 수행이후 아무런 값도 반환 하지 않는 method 입니다.

 

위의 식을 풀이하면 이렇습니다.

1) num = study(4561,325); --> int num1, int num2 괄호의 값이 각각 저장 됩니다. 
2) result = num1 * num2; 이 식을 수행합니다.  
3) System.out.println(num1 + " x " + num2 + " = " + result); 출력한 이후 출력한 쪽으로 복귀 합니다.

4) num = study(4561,325);저장 해주고 필요할 때마다 num 의 값으로 사용할 수 있게 됩니다.

return은 이렇게 값을 가지고 추가적으로 수행하고 싶은 것이 있을 때 사용한다.

 

추가적 설명 )

study 의 result 의 값을 main method 에서 사용할 수 없습니다. 
그 이유는 , return result; 하는 순간 int num1, int num2의 이름을 지워버리기 때문입니다. 
조금 더 자세히 설명을 하면 , 소멸 시키는 이유 : java에서 메모리를 다 할당하면 다른 운영체제에게도 할당할 메모리량이 부족하기 때문입니다. 초기 값을 설정해줘야지 하는 이유입니다.  그렇기 때문에 선언과 동시에 꼭 초기화 하는 습관을 가지는 것이 좋습니다. // int : 0, double :0.0, boolean : true, string : "", char : ' '

 

 

 

② 값이 없을 때 호출한 쪽으로 복귀

 

package return 값이 없을 때 호출한 쪽으로 복귀 ;

public class return 값이 없을 때 호출한 쪽으로 복귀 {
	public static void main(String[] args) {
		study(5,0);  
		
	}  
	
	public static void study(int num1, int num2) {
	    int result = 0; 
	    
	   if(num2 == 0) {
		   System.out.println("나눗셈은 0으로 나눌 수 없습니다.");
		   return;   
	   }
	    result = num1 / num2; 
	    System.out.println(num1 + " / " + num2 + " = " + result); 
	}		
}

위의 식에서 나눗셈은 0으로 나눌 수 없기 때문에 error가 나서 코드 자체가 진행이 되지 않습니다.

이런 상황에 return 을 사용해서 값이 없을 때 study로 돌아와서 "나눗셈은 0으로 나눌 수 없어요." 를 출력하도록 만들었습니다.

 

 

 

※ Method 이름 짓기

 

 변수의 이름과 method 이름을 짓는 방식이 같습니다.
 차이점은 변수의 이름은 일반적으로 명사로 이름으로 시작하고 , method 의 이름은 동사로 이름을 시작합니다.

 

 

 

추가적 설명)

- 매개변수 : method 정의 할 때의 변수 public static void study (int num1, int num2 ) 괄호 안의 값 입니다.
- 인자 : method 호출 될 때의 변수 study(10,5); 괄호 안의 값 입니다.

 

 

 

● 지역변수 (localvariable):

 

if 의 num 과 else의 num 이 같을 때 오류가 나지 않는 이유는? 지역변수 때문이다.


if 와 else 둘다 자신의 영역을 가지고 있기 때문입니다. 프로그램 실행시에 메모리에 할당 되어지기고 자기 영역에서

벗어나면 num 값은 사라지게 됩니다. 즉, if 와 else 영역 안에서만 유효하기 때문에 가능한 것입니다.
조건문, 명령문, method 컨셉은 동일합니다.  영역 안에서만 유효하다.
 

 

+ Recent posts