[JAVA] 메소드

현서황·2024년 9월 12일

JAVA

목록 보기
7/16

타 함수의 function과 같은 개념
자바는 모든 것이 클래스의 요소이므로 메소드 method라 부름.

메소드의 의미1. 반복을 최소화

  • 한 번 이상 실행될 수 있는 일련의 작업들을 묶어놓는 것.

메소드 의미2. 값을 받고 연산하여 결과값을 반환 = 함수


  • static : 정적 메소드(클래스 메소드)에서 호출하려면(main 등)붙어야함.
    - 정적이 아닌 메소드(인스턴스 메소드)는 객체 지향 섹션에서 배울 것
  • 매개변수 parameter : 각각 자료형과 변수명을 적음. 없을 시 빈 괄호
    - 호출할 때 넣는 값(add(3,4)의 3과 4를 인자 argument 라고 한다.
  • return : 반환하는 값이 있을 때, 맨 마지막에 붙인다.

💡 자바의 메소드는 하나의 값만 반환 가능 ->여러 값을 반환하려면 배열 또는 객체 사용!


매개변수의 개수가 정해지지 않은 메소드

	//  💡 ... 연산자 : 해당 위치 뒤로 오는 연산자들을 배열로 묶음
    //  int[] (배열 자체를 받음)과는 다름!
    static double getAverage(int... nums) {
        double result = 0.0;
        for (int num : nums) {
            result += num;
        }
        return result / nums.length;
    }
  • 위의 getAverage함수를 호출할 때는 인자로 배열을 넣으면 자동으로 펼쳐져 인식된다.
		int[] numbers = {3, 91, 14, 27, 4};
		double avgOfArr = getAverage(numbers);

⭐️ 다른(정해진) 인자들과 사용시 맨 마지막에 놓을 것

	static String descClass (int classNo, String teacher, String... kids) {
        return "%d반의 담임은 %s 선생님, 원생들은 %s 입니다."
                .formatted(classNo, teacher, String.join(", ", kids));
    }
  • descClass 메소드를 호출하려면?
	String class3Desc = descClass(3, "목아진", "짱구", "철수", "훈이");

	String[] kids = {"짱구", "철수", "훈이"};
	String class3DescByArr = descClass(3, "목아진", kids);

메소드 오버로딩

같은 메소드 이름, 다른 매개변수
다른 자료형의 값들로 같은 성질의 작업을 정의할 때

	static int add(int a, int b) { return a + b; }

    //  매개변수의 개수가 다름
    static int add(int a, int b, int c) { return a + b + c; }

    //  매개변수의 자료형이 다름
    static double add(double a, double b) { return a + b; }

    //  매개변수의 자료형 순서가 다름
    static String add(String a, char b) { return a + b; }
    static String add(char a, String b) { return a + b; }

    //  ⚠️ 반환 자료형이 다른 것은 오버로딩 안 됨 - 다른 함수명 사용
    //  static double add(int a, int b) { return (double) (a + b); }

  • 원시형 매개변수는 값을 복사해서 가져오기 때문에, 메소드 내부에서 값을 변경하더라도 원본에 영향 끼치지 않는다.
  • 참조형 매개변수(배열)의 경우 주소값이므로 원본 그 자체를 변경시킬 수 있다.

profile
노는 게 제일 좋은 뽀로로

0개의 댓글