개발/Java

☕Java:: {method} rough note

hyuunii 2022. 9. 4. 19:23

method - 1

자바의 method는 다른 프로그램에서의 함수function! 얘들은 복잡한것을 정리해서 단순하게 만드는 정리정돈의 도구임. 아무리 복잡해도 걔들을 모아서 '이름'을 붙일 수 있다면, 우리가 기억할 건 이름 하나로 줄어듦! 다시 이름이 많아지면 또 관련된 애들을 모아서 이름을 또 붙여주면서 정리정돈! 연관된 코드를 모아서 그룹핑하고 네이밍하면 그것이 '함수', 자바에서의 '메쏘드'. 얘를 이용하면 복잡한 코드를 깔끔하게 정리할 수 있으며, 이미 만들어진 메쏘드를 사용함으로써 똑같은 코드를 다시 쓰지 않고 재사용 할 수 있음. 수학에서 고전수학/근대수학을 가르는 핵심이 f(x)임... 그 위대함을 맛봅시다,,,


method - 2

System.out.println(Math.floor(1.1));

↳에서 floor는 Math안에서 입력값을 받아서, 그 입력값을 받아 내림해서 출력해주는 메쏘드. sysout에서 println도 마찬가지! 뒤의 괄호 안에 들어온 입력값을 모니터에 출력해주는 메쏘드. 그리고!

public static void main(String[] args) {

System.out.println("Hello Mdthod!!");

System.out.println(Math.floor(1.1));

}

위의 볼드부분은 전부 메인 메쏘드~! 우리는 항상 메쏘드를 써왔다는 것ㅎㅅㅎ

우리가 자바 앱을 만들때는, 처음으로 클래스를 만들고, 그 클래스를 실행시킬때는 반드시 '메인'이라는 이미 약속된 특수한 메쏘드를 실행시키기로 되어 있음. 그래서 메인 메쏘드 안에 적어 주는 것.

지금껏.. 메쏘드의 소비자로 살았고, 생산자였지만 의미를 잘 몰랐지만 이제는 내 메쏘드를 만들어 볼 것! 그리고 메인 메쏘드의 여러 키워드의 정체를 알아 볼 것~!


method - 3

메쏘드를 만들어주려면 클래스 선언(?) 후 메쏘드를 바로 선언해 줌(아래 참조)

public class WhyMethod {

public static void printTwoTimesA() {

System.out.println("-");

System.out.println("A");

System.out.println("A");

}

이렇게 하면 printTwoTimesA 메쏘드가 선언이 되고, 아래에 그냥 printTwoTimesA();만 적어 줘도(sysout 없이) 위의 선언에 따라서 run하면 - A A가 차례로 나옴~!


method - 4(input)

public static void printTwoTimes(String text, String delimiter)

↳printTwoTimes라는 메쏘드를 정의하는구나. 그리고 이 메쏘드 괄호 안의 첫 번째 값은 반드시 스트링이구나. 그리고 그렇게 들어온 값은 중괄호 안에서 텍스트라는 이름의 변수 값이 되겠구나.

args(arguments)(인자)는 함수 안으로 주입한 구체적 값. 자바가 main이라는 메쏘드를 실행할 때, 입력해주는 입력값이 args를 통해서 들어옴.

text, delimiter 같은 변수? 메쏘드 바깥쪽에서(메쏘드를 사용하는 쪽에서) 주입한 값을 메쏘드 안으로 흘려보내주는 매개자 라는 의미에서 매개변수(parameter) 라고 함.


method - 5(output)

public static void printTwoTimes(String text, String delimiter) {

System.out.println(delimiter);

System.out.println(text);

System.out.println(text);.

위의 이 printTwoTimes 이건 내부적으로 sysout라는 출력 기능까지 포함하고 있어서, 실행 결과를 파일에 쓰고 싶다고 하면 따로 코드를 적어 줘야 함.

FileWriter fw = new FileWriter("output.txt");

fw.write(delimiter+"\n");

fw.write(text+"\n");

fw.write(text+"\n");

fw.close();

그러니까.. 연산 결과를 어떻게 쓰냐에 따라 메쏘드를 계속 만들어야되는 상황이 연출됨... 그러므로 편하고 실용적으로 가기 위해서 twoTimes라는 메쏘드를 만들고, 걔는 리턴값으로 아웃풋이 값이 되게 하여 여기저기서 재사용 되도록 함. 또한 return 뒤의 값이 메쏘드 실행 값이 됨. 또한 return은 메쏘드를 종료시키는 의미가 됨. 그러므로 retun 뒤에 아무리 뭐라 시부렁거려도 실행 안됨. 또한 리턴값이 뭔지도 정해줘야 됨(void, int, string..)

public static String twoTimes(String text, String delimiter) {

/// ↳리턴값이 스트링인 메쏘드를 만들때는 public static String a() { 로 시작하는 것, 인티져인 메쏘드는? public static int one() {

String out = "";

/// ↳out이라고 하는 텍스트를 만들었고

out = out + delimiter + "\n";

/// ↳out이라고 하는 텍스트에 delimiter을 추가하고 줄바꿈 기호 추가

out = out + text + "\n";

/// ↳out은 기존의 out 더하기 text 더하기 줄바꿈 기호

out = out + text + "\n";

/// ↳out은 기존의 out 더하기 text 더하기 줄바꿈 기호

return out;

/// ↳최종의 out을 return

}

얘는 보면 println이 없음 즉 화면에 출력하는 기능이 없! 단지 얘를 불러올 때 sysout(twoTimes)로 쓸거여. 그러니까 저 위의 코드는 더 자율성이 높아 파일에 저장시키는 등 여러 곳에서 쓰일 수 있음.

정리:: 메쏘드는 입력값이 있고, 그걸 처리해서 출력해준다. 출력하는 핵심 키워드는 리턴이고, 어떤 데이터 타입을 리턴할지 직접 적어 주어야 함.


method - 6(apply)