메소드
→ 다른 언어에서의 함수와 동일함
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 |