[JAVA] 메소드(인수, 파라미터, 오버로딩, Ellipsis, 반환)

Gabriela·2023년 7월 19일
0

JAVA

목록 보기
6/24

메소드


‣ 인수(Argument)

  • 메소드에게 전달하는 값을 의미
  • 메소드를 호출할 때 전달할 수 있다.

‣ 파라미터(Parameter)

  • 인수를 받아서 저장하는 변수이다.
  • 매개변수라고도 한다.

⇒인수와 파라미터 활용 예제

  public static void main(String[] args) {
   
    // 인수가 없는 경우
    ex01();  
   
    // 인수가 정수 1개인 경우
    ex02(10);  
  
    // 인수가 실수 2개인 경우
    ex03(1.5, 1.2);  
   
    // 인수가 문자열 1개와 정수 1개인 경우
    ex04("홍길동", 30);  
   
    // 인수가 배열 1개인 경우
    int[] a = {10, 20, 30};
    ex05(a);    
  }
 
// 인수가 배열 1개이면 파라미터 int[] arr을 선언한다. 여기서 배열 이름은 아무 이름이나 사용해도 상관없다.
  public static void ex05(int[] arr) {    
    System.out.println("ex05: " + Arrays.toString(arr));
  }
 
// 문자열 인수는 파라미터 String name으로 받고, 정수 인수는 int age로 받는다.
  public static void ex04(String name, int age) {  
    System.out.println("ex04 name: " + name);
    System.out.println("ex04 age: " + age);
  }
 
// 인수가 실수 2개이면 파라미터 double a, double b를 선언한다.
  public static void ex03(double a, double b) {  
    System.out.println("ex03 a: " + a);
    System.out.println("ex03 b: " + b);
  }
 
// 인수가 정수 1개이면 파라미터 int a를 선언한다.
  public static void ex02(int a) {  
  System.out.println("ex02: " + a);  
  }
 
// 인수가 없으면 파라미터도 없다.
  public static void ex01() {   
    System.out.println("ex01");
  }

‣ 메소드 오버로딩(Overloading)

  • 같은 이름을 가지고 있는 메소드를 여러 개 만들 수 있다는 의미이다.
  • 메소드 오버로딩의 조건
    메소드 이름이 같다.
    파라미터가 반드시 달라야 한다.(개수가 다르거나, 타입이 다르거나)

⇒메소드 오버로딩 활용 예제

  public static void main(String[] args) {
   
    print(10);   // 정수를 출력하고 싶은 print 메소드
    print(1.5);   // 실수를 출력하고 싶은 print 메소드
    print(10, 20); // 정수를 2개 출력하고 싶은 print 메소드
    print(1.5, 1.2); // 실수를 2개 출력하고 싶은 print 메소드
  }
 
  public static void print(double a, double b) {
    print(a);   // 실수를 1개 출력하고 싶은 print 메소드
    print(b);   // 각각을 실수 1개짜리 메소드에 다시 보냄.
    // 이처럼 메소드 안에서 이미 구현된 메소드를 호출해서 작업할 수도 있다.
  }
 
  public static void print(int a, int b) {
    System.out.println(a + ", " + b);
  }
 
  public static void print(double a) {
    System.out.println(a);
  }
 
  public static void print(int a) {
    System.out.println(a);
  }

‣ Ellipsis (...)

말 줄임표(ellipsis)

  • 메소드를 전달하는 인수의 타입이 동일하지만, 갯수가 여러 개인 경우에 사용할 수 있다.
  • 말 줄임표(...)를 활용한다.
  • 말 줄임표로 선언된 변수는 배열로 처리한다.

⇒말 줄임표 활용 예제

  public static void main(String[] args) {
   
    print(10);          // 인수가 정수 1개이다.
    print(10, 20);      // 인수가 정수 2개이다.
    print(10, 20, 30);  // 인수가 정수 3개이다.
  }
 
  public static void print(int... a) {   // 말 줄임표로 선언된 파라미터는 사실 배열이다.
    for(int i = 0; i < a.length; i++) {
      System.out.println(a[i]);
    }
  }

‣ 반환 Return

  • 메소드의 실행 결과 값을 의미한다.
  • 반환값이 없는 경우에는 void 키워드를 작성하고, 반환값이 있는 경우에는 반환값의 타입을 작성한다.

⇒반환 활용 예제

  public static void main(String[] args) {
   
    // get (getter): 반환이 있는 경우 자주 사용하는 프리픽스 값
    // getName();  // 메소드 호출
   
    // 이름을 받아온다.
    System.out.println(getName());  // 홍길동
   
    // 나이를 받아온다.
    System.out.println(getAge());   // 30
   
    // true, false 반환 (주로 is를 사용)
    System.out.println(isAlive());  // false
   
    // 취미를 3개 반환
    System.out.println(Arrays.toString(getHobbies()));  // [여행, 수영, 영화]
  }
 
  public static String[] getHobbies() {   // 배열을 만들어서 반환
    String[] hobbies = {"여행", "수영", "영화"};
    return hobbies;
  }
 
  public static boolean isAlive() {
    // 반환할 값을 지역변수로 먼저 선언
    boolean isAlive = getAge() <= 100;    // 예) 100살 이하면 살아있다는 기준으로 잡음
    return isAlive;   
  }
 
  public static int getAge() {
    // 반환할 값을 지역변수로 먼저 선언
    int age = 500; 
    return age;
  }
 
  public static String getName() {
    // 반환할 값을 지역변수로 먼저 선언
    String name = "홍길동";
    return name;   // 메소드를 호출한 곳으로 반환한다.
  }

void 메소드의 return

  • 반환값이 없는 메소드는 void 키워드를 사용한다.
  • 이런 경우 return; 키워드를 이용해서 메소드 실행을 종료할 수 있다.
  • return 키워드만 작성해야 한다.
  • void 메소드에서만 사용할 수 있다.

⇒return 실행 종료 활용 예제

  public static void main(String[] args) {  
    //(positive number : 양수) 
    positivePrint(10);  
    positivePrint(-10);
  }

  // 전달된 인수가 양수이면 출력하고 아니면 출력하지 않는 positivePrint 메소드
  public static void positivePrint(int a) {
    /*  (실행되는것과 상관없이 코드 스타일 상 좋은 코드 스타일이 아니다.)
    if(a >= 0) {
      System.out.println(a);
    }
   */
   
    // 좋은 예시) 0보다 작으면 실행되지 않는다.
    if(a < 0) {   // 메소드의 종료 조건만 설정
      return;   
      // return 키워드를 메소드를 종료시키는 용도로 사용하는 경우 return 뒤에 값이 없다. (void 메소드의 return 에서만 사용 가능)
    }
    System.out.println(a);
  }

재미져~ 재미져~
Java 너는 ... love 💕

profile
개발이 세상에서 제일 재밌어요

2개의 댓글

comment-user-thumbnail
2023년 7월 19일

유익한 정보를 제공해주셔서 감사합니다.

1개의 답글

관련 채용 정보