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 컨셉은 동일합니다. 영역 안에서만 유효하다.
'빅데이터 > JAVA' 카테고리의 다른 글
[JAVA] 객체지향언어(생성자, 정보은닉/접근제어 지시자,Static) (0) | 2020.04.29 |
---|---|
[JAVA] 객체지향언어(Object oriented Programming) [Class, new] (0) | 2020.04.26 |
[JAVA] 반복문(While문, Do While문, For문) (0) | 2020.04.25 |
[JAVA] 조건문(If , Switch) (0) | 2020.04.22 |
[JAVA] 자료형변환(Type Casting) (0) | 2020.04.22 |