목차
1. 메소드의 필요성
2. 값을 받는 메소드
메소드는 클래스와 관련된 작업을 하는 함수이다.
앞에서 equals 메소드, cotains 메소드, Math 클래스의 floor 메소드 등을 사용했었다.
public class FirstMethod {
public static void main(String[] args) {
System.out.println("Hello Method");
System.out.println(Math.floor(1.1)); //1.0
}
}
· Math.floor(double a): double 타입의 데이터를 받아서 내림 연산을 수행해 double 타입으로 반환
· main 메소드는 특수한 메소드로, 클래스를 실행할 때 어떠한 명령을 더 내리지 않아도 main 메소드를 실행한다.
메소드의 필요성
1억줄 이상의 코드가 있을 때 중간에 어떤 작업을 하는 코드가 여러 줄 있고, 그 코드는 또 한참 후에 여러번 등장한다.
만약 그 코드를 수정해야 하는 상황이라면 어떻게 해야할까?
-> 메소드를 이용하면 쉽게 같은 코드를 재사용하고, 유지보수를 쉽게 할 수 있다.
public class WhyMethod {
public static void main(String[] args) {
//100000000
System.out.println("-");
System.out.println("a");
System.out.println("a");
//100000000
System.out.println("-");
System.out.println("a");
System.out.println("a");
//1000000000
System.out.println("-");
System.out.println("a");
System.out.println("a");
}
}
위 코드에서 "a"가 아니라 다른 문자열을 콘솔에 출력해야할 때
1억줄이 넘는 코드를 일일이 수정하는 것보다
해당 부분을 메소드로 바꾸고, 메소드를 수정하는 식으로 하면 훨씬 비용이 줄어들게 된다.
<참고> 메소드 추출하기
· 메소드로 추출하고 싶은 부분을 블록으로 지정한 후 Refactor -> Extract Method 클릭
· 메소드 이름 입력하고 OK 클릭
· printTwoTimesA 메소드 생성
public static void printTwoTimesA() {
System.out.println("-");
System.out.println("a");
System.out.println("a");
}
값을 받는 메소드
메소드는 인자를 받아서 어떤 값을 도출하는 기능도 넣을 수 있다.
[메소드의 구조]
접근제어자 리턴타입 메소드이름(입력타입 매개변수, ...){
...
return 리턴값; // 리턴타입이 void인 경우 필요없다.
}
· 매개변수(parameter): 메소드에 전달된 값을 저장하는 변수
· 인자(argument): 메소드를 호출할 때 전달하는 입력값(실제 데이터)
=> 매개변수를 넣어서 만든 메소드는 매개변수의 값에 따라 다른 결과를 만들 수 있다.
매개변수를 통해 원하는 문자열과 구분자를 출력하는 메소드를 만들어 본다.
* 아규먼트와 파라미터 참고 -> https://mungje.tistory.com/13
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);
}
}
· printTwoTimes 메소드는 호출할 때마다 문자열과 구분자를 입력받아 콘솔에 출력한다.
<참고> 인자 전달 방식
1. 매개변수에 기본 타입의 값이 전달되는 경우: 값이 복사되어 전달
=> 실인자 값은 변경되지 않는다.
2. 매개변수에 객체가 전달되는 경우: 레퍼런스가 복사되어 전달
=> 실인자 객체 공유(객체의 필드값 변경 가능)
3. 매개변수에 배열이 전달되는 경우: 레퍼런스가 복사되어 전달
=> 실인자 배열 공유(배열의 원소값 변경 가능)
main 메소드
public static void main(String[] args){
}
· 자바 응용프로그램의 실행은 main 메소드부터 시작한다.
· 자바 응용프로그램이 실행을 시작할 때 JVM에 의해 호출되어야 한다. -> public
· main 메소드를 포함한 클래스의 객체가 생성되기 전에, 처음부터 JVM에 의해 호출된다. -> static
· 아무 값도 리턴하지 않는다. -> void
· 문자열 배열(String[ ])이 매개변수(args)로 전달된다.
- 명령행에 입력된 인자들을 문자열 배열로 만들어 main 메소드에 전달한다.
'Programming 기초 > Java' 카테고리의 다른 글
[Java] 메소드의 활용 (0) | 2023.03.19 |
---|---|
[Java] 메소드의 출력 (0) | 2023.03.17 |
[Java] 제어문과 배열 응용 (0) | 2023.03.14 |
[Java] 반복문과 배열 (0) | 2023.03.11 |
[Java] == vs equals (0) | 2023.03.09 |
댓글