[Java] 입문 - 8.메서드

2025. 2. 10. 18:01·Language
728x90

 

이 글은 인프런 김영한 교수님의 자바 입문 강의를 듣고 정리한 글입니다.

 

메서드

  • 자바에서는 함수를 메서드(Method)라 한다, 메서드도 함수의 한 종류라고 생각하면 된다
package Ch08;

public class method1 {

    public static void main(String[] args) {
        // 계산 1
        int sum1 = add(5, 10);
        System.out.println(sum1);

        //계산 2
        int sum2 = add(15, 20);
        System.out.println(sum2);
    }

    // add 메서드
    public static int add(int a, int b) {
        System.out.println(a + "+" + b + "연산 수행");
        int sum = a + b;
        return sum;
    }
}

**메서드 선언**
public static int add(int a, int b)

- public static
	- public: 다른 클래스에서 호출할 수 있는 메서드
	- static: 객체를 생성하지 않고 호출할 수 있는 정적 메서드
- int add(int a, int b)
	- int: 반환 타입을 정의
	- add: 메서드의 이름
	- int a, int b: 메서드안에서만 사용되는 변수인 파라미터, 매개변수라고 한다
	
**메서드 본문**
{
	System.out.println(a + "+" + b + " 연산 수행");
	int sum = a + b;
	return sum;
}
- 실행 결과를 반환하려면 return 문을 사용해 반환할 결과를 적어주면 된다

메서드 호출과 용어 정리

호출: call("hello", 20)
메서드 정의: int call(String str, int age)

- 메서드를 호출 할 때는 인수와 매개변수의 타입이 맞아야 한다. 또한 순서와 갯수도 맞아야한다
  • 인수(Argument)
    • “hello”, 20처럼 넘기는 값을 영어로 Argument, 한글로 인수라고 한다
  • 매개변수(Parameter)
    • 메서드를 정의할 때 선언한 변수인 String str, int age를 매개변수, 파라미터라고 한다
    • 메서드를 호출할 때 인수를 넘기면, 그 인수가 매개변수에 대입된다

메서드 정의

제어자 반환타입 메서드이름(매개변수 목록) {
	메서드 본문
}
  • 제어자: public, static과 같은 부분
  • 반환 타입: 메서드가 실행된 후 반환하는 데이터의 타입. 값을 반환하지 않는 경우 void 사용
  • 메서드 이름: 이름은 메서드를 호출하는 데 사용
  • 매개변수: 입력값으로 메서드 내부에서 사용할 수 있는 변수. 매개변수는 옵션이다
  • 메서드 본문: 실제 메서드의 코드가 위치한다

매개변수가 없거나 반환 타입이 없는 경우

package Ch08;

public class method2 {

    public static void main(String[] args) {
        printHeader();
        System.out.println("프로그램을 동작합니다");
        printFooter();
    }

    public static void printHeader() {
        System.out.println("프로그램을 시작합니다");
        return;
    }

    public static void printFooter() {
        System.out.println("프로그램을 종료합니다");
    }
}
  • 매개변수가 없는 경우
    • 선언: public static void printHeader()와 같이 매개변수를 비워두고 정의하면 된다
    • 호출: printHeader();와 같이 인수를 비워두고 호출하면 된다
  • 반환 타입이 없은 경우
    • 선언: public static void printHeader()와 같이 반환 타입을 void로 정의하면 된다
    • 호출: printHeader();와 같이 반환 타입이 없으므로 메서드만 호출하고 반환 값을 받지 않으면 된다
  • void와 return 생략
    • 모든 메서드는 항상 return을 호출해야한다. 그런데 반환 타입 void의 경우에는 예외로 printFooter()와 같이 생략해도 된다. 자바가 반환 타입이 없는 경우에는 return을 마지막 줄에 넣어준다

반환 타입

  • 반환 타입이 있는 메서드는 반드시 return을 사용해서 값을 반환해야 한다
package Ch08;

public class methodReturn1 {

    public static void main(String[] args) {
        boolean result = odd(2);
        System.out.println(result);
    }

    public static boolean odd(int i) {
        if (i % 2 == 1) {
            return true;
        } else {
            return false;
        }

    }
}

 

메서드 호출과 값 전달

  • 자바는 항상 변수의 값을 복사해서 대입한다
package Ch08;

public class methodValue1 {

    public static void main(String[] args) {
        int num1 = 5;
        System.out.println("1:" + num1); // 5
        changeNumber(num1);
        System.out.println("4:" + num1); // 5
    }

    public static void changeNumber(int num2) {
        System.out.println("2:" + num2); // 5
        num2 = num2 * 2;
        System.out.println("3:" + num2); // 10
    }
}

 

메서드와 형변환

  • 메서드를 호출할 때도 형변환이 적용된다

명시적 형변환

package Ch08;

public class methodCasting1 {

    public static void main(String[] args) {
        double number = 1.5;
        //printNumber(number);
        printNumber((int) number);  // 명시적 형변환을 통해 double을 Int로
    }

    public static void printNumber(int n) {
        System.out.println("숫자: " + n);
    }
}

자동 형변환

package Ch08;

public class methodCasting2 {

    public static void main(String[] args) {
        int number = 100;
        printNumber(number);
    }

    public static void printNumber(double n) {
        System.out.println("숫자: " + n);
    }
}

 

메서드 오버로딩

  • 오버로딩: 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 타입, 개수, 순서를 다르게 해 구분하는 것
package Ch08;

public class Overloading1 {

    public static void main(String[] args) {
        System.out.println("1: " + add(1, 2));
        System.out.println("2: " + add(1, 2, 3));
    }

    public static int add(int a, int b) {
        System.out.println("1번 호출");
        return a + b;
    }

    public static int add(int a, int b, int c) {
        System.out.println("2번 호출");
        return a + b + c;

    }
}

 

정리

변수명 vs 메서드명

변수 이름은 일반적으로 명사를 사용한다. 한편 메서드는 무언가 동작하는데 사용하기 때문에 동사로 시작

  • 변수명: customerName, totalSum …
  • 메서드명: printReport(), calculateSum()

메서드 사용의 장점

  • 코드 재사용: 특정 기능을 캡슐화하므로, 필요할 때마다 그 기능을 다시 작성할 필요 없이 메서드를 호출해 재사용할 수 있다.
  • 코드의 가독성: 이름이 부여된 메서드는 코드가 수행하는 작업을 명확하게 나타내므로 추가적인 문맥 제공
  • 모듈성: 큰 프로그램을 작은 관리 가능한 부분으로 나눌 수 있다. 가독성 향상과 디버깅을 쉽게 만든다
  • 코드 유지 관리: 수정이 필요한 경우 해당 메서드만 수정하면 된다
  • 재사용성과 확장성: 다른 프로그램이나 프로젝트에서도 재사용 가능하고, 기능 추가와 확장이 유용하다
  • 추상화: 메서드를 사용하는 곳에서는 메서드의 구현을 몰라도 된다.
  • 테스트와 디버깅 용이성: 개별 메서드는 독립적으로 테스트하고 디버그할 수 있다. 신속한 수정 가능

 

 

 

 

 

 

이미 notion에서 작성한 글이라 같은 날짜에 올라갈 수도 있습니다
728x90

'Language' 카테고리의 다른 글

[Java] 입문 - 7.배열  (0) 2025.02.10
[Java] 입문 - 6. 훈련  (0) 2025.02.10
[Java] 입문 - 5. 스코프 및 형변환  (0) 2025.02.10
[Java] 입문 - 4. 반복문  (0) 2025.02.10
[Java] 입문 - 3. 조건문  (0) 2025.02.07
'Language' 카테고리의 다른 글
  • [Java] 입문 - 7.배열
  • [Java] 입문 - 6. 훈련
  • [Java] 입문 - 5. 스코프 및 형변환
  • [Java] 입문 - 4. 반복문
Dlawoct
Dlawoct
WeekEnd 개발자
  • Dlawoct
    Week-End
    Dlawoct
  • 전체
    오늘
    어제
    • 분류 전체보기 (53) N
      • Language (9)
      • Algorithm (8)
      • Backend (7)
        • Spring (7)
        • Node.js (0)
      • DataEnginering (3)
        • Big Data (0)
      • CS (22) N
        • 데이터베이스 (11) N
        • 컴퓨터네트워크 (9)
        • 운영체제 (2)
      • IT 지식 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    top-n 쿼리
    DML
    검색문
    백준
    UDP
    southbound api
    백엔드
    언어
    김영한
    SQL
    쿠버네티스
    스프링
    SQLD
    단일행 내장 함수
    TCP
    Java
    컨테이너
    network layer
    자바
    도커
    운영체제
    프로그래밍 언어
    데이터베이스
    데베
    select
    sdn controller
    김영한 java 강의
    db
    관계
    spring
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
Dlawoct
[Java] 입문 - 8.메서드
상단으로

티스토리툴바