Language/Java

[ Java ] 메소드

곽수진 2021. 9. 3. 18:23
반응형

메소드

→ 다른 언어에서의 함수와 동일

 

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

 

 

메소드의 정의와 호출

 

package sujin.method;

public class MethodDemo {

	public static void numbering() {
		int i=0;
		while (i<10) {
			System.out.println(i);
			i++;
		}
	}
	
	public static void main(String[] args) {
		numbering();
	}
}

 

 

결과값 출력 모습

▶️ 0부터 9까지의 결과값 출력을 여러번 반복하고 싶다면 numbering() 호출 횟수를 늘리면 됨

 

 

입력값

 

package sujin.method;

public class MethodDemo2 {
	public static void numbering(int limit) {
		int i = 0;
		while (i<limit) {
			System.out.println(i);
			i++;
		}
	}

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

 

▶️ 매개변수는 입력값을 수용하기 위한 변수

▶️ 인자는 메소드의 동작을 제어하는 역할을 함

→ 인자에 입력한 수가 매개변수(limit 변수)에 적용

 

 

▶️ i가 0부터 limit 전까지, 즉 인자 값인 5 전까지 하나씩 증가하는 반복문이기 때문에 결과 값으로 0부터 4까지 출력

 

 

▶️ 위 코드는 다음과 동일함

package sujin.method;

public class MethodDemo2 {
	public static void numbering() {
    int limit = 5;
		int i = 0;
		while (i<limit) {
			System.out.println(i);
			i++;
		}
	}

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

 

 

0부터 시작이 아닌 특정한 수부터 결과 값으로 출력하고 싶다면?

 

package sujin.method;

public class MethodDemo3 {
	
	public static void numbering(int init, int limit) {
		int i = init;
		while (i < limit) {
			System.out.println(i);
			i++;
		}
	}

	public static void main(String[] args) {
		numbering(1, 5);
	}
}

▶️ 기존에 사용했던 limit 외에 시작하고자 하는 수를 변수 init를 통해 지정

→ 변수 init로 i의 값을 초기화

 

 

▶️ 0이 아닌 1부터 4까지 결과값이 출력됨

 

 

Return

 

package sujin.method;

public class MethodDemo4 {
	public static String numbering(int init, int limit) {
		int i = init;
		String output = "";
		while (i<limit) {
			output += i;
			i++;
		}
		return output;
	}

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

 

결과값 출력 모습

 

▶️ public static String numbering(int init, int limit) : 메소드 numbering이 return할 값이 반드시 문자열임을 의미함

❌ void는 빈 공간을 의미함 → 메소드 앞에 붙으면 메소드의 return값이 존재하지 않음을 명시적으로 의미함

▶️ String output = "" : 만들어지는 숫자들을 output이라는 변수에 담기 위해서 변수에 빈 값 지정

▶️ output += i : output = output + i와 같은 의미

▶️ return output : output에 담겨 있는 문자열을 메소드 외부로 반환하려면 return 키워드 뒤에 반환하려는 값을 배치함

▶️ 메소드 numbering이 return한 값이 변수 result에 담기고 이를 화면에 출력함

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

 

 

컴파일 되지 않는 코드

 

package sujin.method;

public class ReturnDemo {
	public static int one() {
		return 1;
		return 2;
		return 3;
	}

	public static void main(String[] args) {
		System.out.println(one());
	}
}

▶️ return은 값을 반환하는 동작도 하고 메소드를 중단시키는 역할을 함

→ return이 처음 등장한 이후의 구문은 종료되었기 때문에 실행되지 않음

 

 

package sujin.method;

public class ReturnDemo2 {
	public static String num(int i) {
		if (i==0) {
			return "zero";
		} else if (i==1) {
			return "one";
		} else if (i==2) {
			return "two";
		}
		return "none";
	}

	public static void main(String[] args) {
		System.out.println(num(1));
	}
}

 

 

결과값 출력 모습

 

▶️ 메소드 num의 인자값이 1인 경우이므로 i == 0인 경우는 false이므로 return "zero"에서 종료되지 않음

→ 처음으로 true가 나온 i == 1인 경우에서 return "one"이 종료되며 반환됨

 

 

여러 개의 값을 출력하고 싶다면?

 

package sujin.method;

public class ReturnDemo3 {
	public static String getMember1() {
		return "최진혁";
	}
	
	public static String getMember2() {
		return "최유빈";
	}
	
	public static String getMember3() {
		return "한이람";
	}

	public static void main(String[] args) {
		System.out.println(getMember1());
		System.out.println(getMember2());
		System.out.println(getMember3());
	}

}

 

 

결과값 출력 모습

 

▶️ 하나의 메소드는 하나의 값만을 반환할 수 있기 때문에 위는 각각의 회원정보를 반환하는 메소드를 만들었음

 

 

배열 이용한 여러 값 출력

 

package sujin.method;

public class ReturnDemo4 {
	
	public static String[] getMembers() {
		String[] members = {"최진혁", "최유빈", "한이람"};
		return members;
	}

	public static void main(String[] args) {
		String[] members = getMembers();
	}
}

▶️ 위의 상황을 보완하기 위해서 배열을 이용해 멤버를 담고 있는 배열을 반환함

→ 메소드 getMembers가 리턴한 배열을 members 변수에 담았고 이 변수를 이용해 여러 개의 데이터를 처리할 수 있게 되었음

반응형

'Language > Java' 카테고리의 다른 글

[ Java ] 클래스와 인스턴스 그리고 객체지향  (0) 2021.09.03
[ Java ] 입력과 출력  (0) 2021.09.03
[ Java ] 배열  (0) 2021.09.03
[ Java ] 반복문  (0) 2021.09.03
[ Java ] 논리 연산자  (0) 2021.09.03