method(함수 function) : 정리정돈의 도구
refactor의 기본은 method이다.
public class WhyMethod {
public static void printTwoTimesA() {
System.out.println("-");
System.out.println("A");
System.out.println("A");
}
public static void main(String[] args) {
// 100000000
printTwoTimesA();
// 100000000
printTwoTimesA();
// 100000000
}
}
메소드는 작은 프로그램이라고 할 수 잇다.
입력값에 따라서 다양하게 동작하는 프로그램을 만들 수 있는 것처럼 메소드도 입력값을 받아서 처리할 수 있도록 개선할 수 있다.
main 메소드가 있어야 자바는 main 메소드를 호출해서 우리가 실행하고싶은 프로그램을 실행시킨다.
String[] 문자열 배열
args
text, delimeter 등을 매개변수(parameter)라고 부른다.
메소드 바깥속에서 메소드 안으로 흘려보내주는 역할하기 때문
주입한 구체적인 값 ("a" 같은거) : arguments (인자)
public class WhyMethod {
// 매개변수
public static void printTwoTimesA(String text, String delimiter) {
System.out.println(delimiter);
System.out.println(text);
System.out.println(text);
}
public static void main(String[] args) {
// 인자, argument
printTwoTimesA("a", "-");
// 100000000
printTwoTimesA("b", "*");
// 100000000
}
}
import java.io.FileWriter;
import java.io.IOException;
public class WhyMethod {
public static void printTwoTimesA(String text, String delimiter) {
System.out.println(delimiter);
System.out.println(text);
System.out.println(text);
}
public static String twoTimes(String text, String delimiter) {
String out = "";
out = out + delimiter + "\n";
out = out + text + "\n"; // 왜 윗줄의 out을 안가져오는걸까?
out = out + text + "\n";
return out;
}
public static void writeFileTwoTimes(String text, String delimiter) throws IOException {
FileWriter fw = new FileWriter("output.text");
fw.write(delimiter+"\n");
fw.write(text+"\n");
fw.write(text+"\n");
fw.close();
}
public static void main(String[] args) throws IOException {
// 100000000
printTwoTimesA("a", "-");
System.out.println(twoTimes("a","-"));
// 100000000
printTwoTimesA("b", "*");
// 100000000
writeFileTwoTimes("a", "*");
FileWriter fw = new FileWriter("out.txt");
fw.write(twoTimes("a", "*"));
fw.close();
// Email.send("egoing@a.com", "two times a", twoTimes("a","&"));
}
}
public class OutputMethod {
public static String a() {
// ...
return "a"; // 이 return 할 "a" 값이 a()의 값이 된다.
}
public static int one() {
// ...
return 1;
/**
* return 뒤에 있는 값이 그 메소드의 실행 값이 된다.
* return 값은 그 메소드를 종료시키는 역할도 한다.
* return 뒤에 아무리 많은 값이 있어도 return에서 종료됨.
* 메소드를 끝낼때도 return 사용됨.
*/
}
// void는 return 값이 없는 메소드
public static void main(String[] args) {
System.out.println(a());
System.out.println(one());
}
}
public class AccountingApp2 {
//공급가액
public static double valueOfSupply = 10000.0;
//부가가치세율
public static double vatRate = 0.1;
public static double getVAT() {
return valueOfSupply*vatRate;
}
public static double getTotal() {
return valueOfSupply+getVAT();
}
public static double expenseRate = 0.3;
public static void main(String[] args) {
double expense = valueOfSupply*expenseRate;
double income = valueOfSupply-expense;
double dividend1 = income*0.5;
double dividend2 = income*0.3;
double dividend3 = income*0.2;
System.out.println("Value of supply : " +valueOfSupply);
System.out.println("VAT : " +getVAT());
System.out.println("Total : " +getTotal());
System.out.println("Expense : " +expense);
System.out.println("Income : " +income);
System.out.println("Dividend : " +dividend1);
System.out.println("Dividend : " +dividend2);
System.out.println("Dividend : " +dividend3);
}
}
다음은 객체 지향 프로그래밍