CS/JAVA

메서드의 개념

휴먼코딩 2024. 1. 18. 16:42

메서드 (Method)


메서드는 클래스의 내부에 존재하는 영역으로 특정 기능을 하는 코드를 묶어서 나타내는 것이다. 

즉, 특정 기능을 수행하기 위한 코드들의 집합체이다.

 

특정 기능을 수행한다는 것은 입력받은 데이터를 일련의 처리 과정을 통해

만들어진 결과값을 반환하는 것을 의미한다.

 

// 클래스(Class)
public class Main {
	// 메서드(Method)
	public static void main(String[] args){
		// 특정 기능을 구현하는 곳
	}
}

메서드의 정의

메서드는 처리 결과값을 반환한다. 처리 결과는 값의 형태로 된 데이터를 뜻하며, 이 데이터가 반환 값이다.

값은 여러 종류로 나뉜 데이터로 정수, 문자, boolean 등 다양하다.

 

이러한 값의 종류를 데이터 타입이라고 하며 자료형이라고 한다. 따라서 반환 타입은 메서드가 반환할 값의 종류를

의미하며 메서드를 정의할 때 반환할 값의 타입을 명시해야 한다.

public static void main(String[] args){
}

 

 

매인 메서드

main 함수는 프로그램 실행 시 처음으로 수행되는 함수이기 때문에,

자바로 프로그래밍할때 반드시 메인 메서드가 필요하다.

프로그램의 내부에서 값을 호출할 수 없으며 자바의 시작은 main 함수명으로 해야하는 규칙이 있음.

public class Test {
  public static void main (String[] args) {
    System.out.println(args[0]);
 
    strMethod("def");
  }
  public static void strMethod(String srg) {
    System.out.println(srg);
  }
}

public, static, void 선언이 의미하는 바는?

public

다른 타입에서 객체를 불러올 수 있다.

어느 곳에서든 해당 객체를 참조할 수 있어 공개되어 있다.

staic

static은 클래스와 관련이 있다.

클래스의 객체를 만들지 않더라도 이 함수는 만들 수 있다.

static 객체에서 static이 아닌 객체를 호출하는 것은 불가능하다.

static이 먼저 정의되기 때문에 아직 정의되지 않은 객체는 호출할 수 없다.

void 

리턴값이 없다는 것이다. 만약에 그 함수가 int 값을 리턴한다면 void 대신 int를 적는다.

main 옆에 있는 (String[] args)의 의미는?

args 문자열을 배열로 사용하겠다는 의미

args는 변수명이기 때문에 args가 아니어도 상관은 없으나 String[] args 구문 자체를 뺄 수는 없다.

매개 변수


1. 메서드는 데이터를 입력받아 해당 데이터를 일련의 처리 과정을 통해 결괏값을 반환한다.

2. 메서드 외부에서 메서드 내부로 전달하는 입력 값이 존재한다. 이를 매개변수라고 한다.

3. 값(데이터)는 변수를 통해 저장할 수 있다.

이를 메서드의 매개변수로 지정함으로서 메서드 내부에서 사용할 수 있게 해 준다.

4. 메서드 이름 옆에 소괄호() 를 통해 매개변수의 타입과 이름을 공백으로 구분하여 지정한다.

5. 매개변수의 타입은 어떤 데이터 타입을 메서드가 입력받아 사용할 것인지를 지정하는 곳이다.

6. 매개변수 이름은 입력받은 값에 이름을 붙여 메서드 내부에서 이름을 통해 사용한다.

package com.kh.EX01;

public class BankAccountPO {
    // 필드
    static int balance = 0; // 예금잔액
    
    public boolean balanceEquals(BankAccount act01) {
        if (balance == act01.balance) {
            act01.balance = 0;
            return true;
        } else {
            return false;
        }
    }

    public static void main(String[] args) {
        deposit(10000); // 입금 진행
        checkMyBalance(); // 잔액 확인
        withdraw(3000); // 출금 진행
        checkMyBalance(); // 잔액 확인
    }

    public static int deposit(int amount) { // 입금
        balance += amount;
        return balance;
    }

    public static int withdraw(int amount) { // 출금
        balance -= amount;
        return balance;
    }

    public static int checkMyBalance() { // 예금 조회
        System.out.println("잔액 : " + balance);
        return balance;
    }
}

내부 데이터:
 deposit(10000); // 입금 진행
 checkMyBalance(); // 잔액 확인
 withdraw(3000); // 출금 진행
 checkMyBalance(); // 잔액 확인

기본 타입 

byte, short, char, int, long, float, double, boolean 8개의 타입을 말한다.

기본 타입 변수에는 값 자체가 저장된다.

//기본 타입 변수의 예
int age = 28;
double price = 100.5;

참조 변수

기본 타입을 제외하고 배열, 열거, 클래스, 인터페이스 등을 말한다.

참조 타입의 변수에는 객체(메모리)의 번지가 저장된다.

//참조 타입 변수의 예
String name="신용권";
String hobby="독서";

 

main 옆에 있는 (String[] args)의 의미는?

args 문자열을 배열로 사용하겠다는 의미

args는 변수명이기 때문에 args가 아니어도 상관은 없으나 String[] args 구문 자체를 뺄 수는 없다.

public static void main(String[] args){
	int num1 = 5;
    int num2 = 7;
    System.out.println("5 + 7 = " + (num1 + num2));
 }

메소드에 대한 이해와 메소드의 정의

public static void main(String[] args){
	System.out.println("프로그램의 시작");
    //hiEveryone(12,13) 변수의 옵션
    hiEveryone(12); //12를 전달하며 hiEveryone 호출
    hiEveryone(13); //13을 전달하며 hiEveryone 호출
    System.out.println("프로그램의 끝");
}

//매개변수가 하나인 메소드의 정의
public static void hiEveryone(int age){
	System.out.println("좋은 아침입니다.");
    System.out.println("제 나이는" + age + "세 입니다.");
}

문제풀이:
프로그램의 시작
좋은 아침입니다
제 나이는 12세 입니다.
좋은 아침입니다.
제 나이는 13세 입니다.
프로그램의 끝

 

매개변수가 0, 2개인 메소드

 

public static void main(String[] args){
	double myHeight = 175.9;
    hiEveryone(12, 12.5);
    hiEveryone(13, myHeight);
    byEveryone();
}

//매개변수가 둘인 메소드의 정의
public static void hiEveryone(int age, double height){
	System.out.println("제 나이는" + age + "세 입니다.");
    System.out.println("저의 키는" + height + "cm 입니다.");
}

//매개변수가 없는 메소드의 정의
public static void byEveryone(){
	System.out.println("다음에 뵙겠습니다.");
}

출력결과:
제 나이는 12세 입니다.
저의 키는 12.5cm입니다.
제 나이는 13세 입니다.
저의 키는 175.9cm 입니다.
다음에 뵙겠습니다.

 

값을 반환하는 메소드

 return 키워드를 사용해 처리 결과를 반환할 수 있다.

return은 메소드를 호출한 영역으로 값을 반환하는 것과 메소드의 종류 두 가지가 있다.

//void: 값을 반환하지 않음을 의미
public static void main(String[] args){
	int result;
    result = adder(4, 5); //adder가 반환하는 값을 result에 저장
    System.out.println("4 + 5 = " + result);
    System.out.println("3.5 x 3.5x - " + square(3,5));
}

//return: 값의 반환을 명령
public static int adder(int num1, int num2){
	int addResult - num1 + num2;
    return addResult; //addResult의 값을 반환
}

public static double square(double num){
	return num * num; //num * num의 결과를 반환
}

출력결과:
4 + 5 = 0
3.5 x 3.5 = 12.25

 

메소드의 호출

메서드는 정의하는 것만으로는 실행되지 않는다.

메서드를 정의하는 것은 동작에 대한 처리 과정을 기술한 것이다.

//메서드 이름(값1, 값2, ....)
method(value1, value2, ...);

//예시로 정의한 add메서드를 사용
add(5, 10);

 

메서드 add의 매개변수는 2개로 지정하여 작성했기 때문에 호출할 때에도 2개의 값을 지정해주어야 한다.

5와 10을 넣음으로서 num1에는 5, num2에는 10이라는 정수 값이 임시적으로 저장된 후 5 + 10 연산이 수행되어

반환 값이 15인 데이터를 리턴한다.