- 수업소개 -
메소드를 실행시켰을 때 그 결과가 값이 되도록 할 수 있다면 메소드는 아주 많은 곳에서 사용할 수 있게 됩니다. 여기서는 return 키워드를 이용해서 메소드를 어떤 값의 표현식이 되도록 하는 방법을 살펴보겠습니다.
다음의 코드를 살펴보자
System.out.println(Math.floor(1.1));
이 코드에서 Math.floor(1.1) 은 1.0이라는 값이 된다. 이러한 함수의 output 을 파일에 저장하거나, 이메일을 보내거나 소리를 내거나 등 여러가지 용도로 사용할 수 있다.
우리가 만든 printTwoTimes() 메소드의 내용을 보면, println()이라고 하는 모니터에 출력하는 기능까지 포함되어 있어 뭔가 실행결과를 파일에 쓰게하고 싶을 때 그대로 사용할 수 없게된다.
public class WhyMethod {
public static void main(String[] args) {
//인자, argument
printTwoTimes("a", "-");
// 100000000
printTwoTimes("a", "*");
// 100000000
printTwoTimes("a", "&");
printTwoTimes("b", "!");
}
//매개변수,parameter
public static void printTwoTimes(String text, String delimiter) {
System.out.println(delimiter);
System.out.println(text);
System.out.println(text);
}
}
writeFileTwoTimes() 라는 새로운 이름의 메소드를 만들고 내용으로 파일을 저장하는 기능을 추가해서 사용할 수 있다.
import java.io.FileWriter;
import java.io.IOException;
public class WhyMethod {
public static void main(String[] args) throws IOException {
//인자, argument
printTwoTimes("a", "-");
// 100000000
printTwoTimes("a", "*");
// 100000000
printTwoTimes("a", "&");
printTwoTimes("b", "!");
writeFileTwoTimes("c", "---");
}
//매개변수,parameter
public static void printTwoTimes(String text, String delimiter) {
System.out.println(delimiter);
System.out.println(text);
System.out.println(text);
}
public static void writeFileTwoTimes(String text, String delimiter) throws IOException {
FileWriter fw = new FileWriter("output.txt");
fw.write(delimiter+"\n");
fw.write(text+"\n");
fw.write(text+"\n");
fw.close();
}
}
즉, 연산 결과를 어떻게 사용하느냐에 따라서 메소드를 계속 만들어야 되는 상황이 온다.
해결방법은?
TwoTimes() 라는 메소드를 만들고 그 메소드의 output이 값(반환값)이 되도록 return 값을 주어 여기저기서 재사용할 수 있도록 한다.
메소드의 return 값 예제
[예제] OutputMethod 클래스 파일 생성
a() 라는 메소드를 만들고 이 메소드를 실행시키면, a() 가 'a' 가 되도록 한다.
one() 이라는 메소드는 '정수 1'이 되도록 한다.
프로그램 실행이 끝날 때 리턴을 주게 되면 a 라는 메소드는 return 다음에 나오는 값("a")이 된다.
public class OutputMethod {
public static void main(String[] args) {
System.out.println(a());
System.out.println(one());
}
public static String a() {
// ...
return "a"; //프로그램 실행이 끝날 때 return
}
public static int one() {
return 1; //프로그램 중간에 return 시, 여기서 메소드가 종료된다. 이후 코드는 실행되지 않음
//...
}
}
Return
- 메소드 return 뒤에 있는 값이 그 메소드의 실행 결과가 된다.
- return 은 메소드를 종료시키는 역할을 한다. 따라서 return 다음에 나오는 코드는 실행되지 않고 종료된다.
- 메소드는 리턴값이 어떤 데이터 타입인지를 정해줘야한다.
public static String a() {} 에서 String은 return 할 데이터의 타입이다.
public static int b() {} 는 return 값으로 int형 데이터를 넘겨준다.
public static void main(String[] args){} 에서 void 는 "리턴값이 없다"라는 의미이다.
[실습] WhyMethod.java 파일을 개선해서 TwoTimes() 라는 메소드를 만들어 실행결과를 리턴하도록 개선해보자
TwoTimes() 는 화면에서 출력한다는 기능을 빼버리고 리턴값을 갖고 있기 때문에 여러곳에서 사용될 수 있다. 예를 들어 파일에 저장한다.
import java.io.FileWriter;
import java.io.IOException;
public class WhyMethod {
public static void main(String[] args) throws IOException {
printTwoTimes("a", "-");
System.out.println(twoTimes("a", "="));
writeFileTwoTimes("b", "*");
FileWriter fw = new FileWriter("out.txt");
fw.write(twoTimes("a", "*"));
fw.close();
printTwoTimes("a", "&");
//아래는 예시일뿐 실제로 동작하는 코드는 아님
// Email.send("test@a.com","two times a", twoTimes("a","&"));
}
public static String twoTimes(String text, String delimiter) {
String out = "";
out += out + delimiter + "\n";
out += out + text + "\n";
out += out + text + "\n";
return out;
}
public static void printTwoTimes(String text, String delimiter) {
System.out.println(delimiter);
System.out.println(text);
System.out.println(text);
}
public static void writeFileTwoTimes(String text, String delimiter) throws IOException {
FileWriter fw = new FileWriter("output.txt");
fw.write(delimiter+"\n");
fw.write(text+"\n");
fw.write(text+"\n");
fw.close();
}
}
'코딩공부 > JAVA' 카테고리의 다른 글
JAVA method [4] - 메소드의 활용 (0) | 2019.12.11 |
---|---|
JAVA method [2] - 메소드의 입력 값 (0) | 2019.12.11 |
JAVA method [1] - 메소드의 기본 형식 (0) | 2019.12.11 |
JAVA 제어문 [4] - 종합응용 (0) | 2019.10.30 |
JAVA 제어문 [3] - 반복문과 배열 (0) | 2019.10.30 |