Java

[Java] Method

wwxs 2024. 9. 6. 10:35

Method(메서드)

  • 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
  • 어떤 값을 입력하면 해당 값으로 작업을 수행하여 결과를 반환

메서드의 구조 (선언부, 구현부)

1. 메서드의 선언부

 

(1) 매개변수 선언(parameter)

  • 메서드가 작업을 수행하는데 필요한 값들(입력)을 제공받기 위한 것
  • 필요한 값의 개수만큼 변수를 선언하여 각 변수 간의 구분은 쉼표(,)를 사용
  • 변수들의 데이터 타입이 같더라도 변수의 타입을 생략할 수 X

(2) 반환 타입(return type)

  • 메서드의 작업수행 결과(출력)인 반환값의 타입을 명시
  • 반환값이 없는 경우 void 키워드를 사용

2. 메서드의 구현부

(1) return문

  • 메서드의 반환타입이 void가 아닌 경우 구현 { } 안에 반드시 return 반환값타입데이터가 포함
  • 해당 반환값은 반환 타입과 일치하거나 적어도 자동 형변환이 가능한 것
    • 더보기
      cf) 자동 형 변환: 작은 데이터 > 큰 데이터
      EX) int example() {
      short a = 10
      return a;
      }
  • return문은 단 하나의 값만을 반환 가능

(2) 지역변수(local variable)

  • 메서드 내에 선언된 변수 → 그 메서드 내에서만 사용 가능
  • 메서드의 구현부에 작성된 변수 뿐만 아니라 매개변수도 메서드 내에서 선언된 것으로 간주하기 때문에 지역변수로 인식
더보기
class Example {
	// (인스턴스) 변수 선언
	// : 데이터 타입이 같은 경우 타입 생략 가능
	int x, y;
	// int x;
	// int y;
	
	// add 메서드
	int add (int x, int y) {
		return x + y;
	}
	
	// multiply 메서드
	int multiply(int x, int y) {
		return x * y;
	}
	
	// 매개변수 X, 반환값 X
	void print99dan() {
		for (int i = 1; i < 10; i++) {
			for (int j = 1; j < 10; j ++) {
				System.out.print(j*i + " ");
			}
			System.out.println();
		}
	}
}

// class 파일
public class Method02 {
	// main 메서드
	// 접근제어자 정적메서드 반환타입 메소드명(매개변수) { ...구현부 }
	public static void main(String[] args) {
		
		Example ex1 = new Example();
		
		ex1.print99dan();
		
		
//		ex1.add(10, 20, 30);	- Error
//		ex1.add("10", "20");	- Error
		ex1.add('a', 'b');	// char 타입(2) >> int 타입(4) : 자동 형 변환
		
		System.out.println(ex1.multiply(10, 20));	// 200
	}
}

 

(예제 코드)

더보기
class BaseballPlayer {
	// 인스턴스 변수
	// 선수 이름,(name - 문자열)
	// 타율(battingAverage - 실수)
	// 홈런 수(homeRuns - 정수)
	String name;
	double battingAverage;
	int homeRuns;
	
	// 정적(클래스) 변수
	// : 생성된 선수의 총 인원(playerCount - 정수)
	// >> 모든 인스턴스에서 공유
	static int playerCount = 0;
	
	// 생성자 >> 인스턴스 변수 초기화 & 정적 변수 후위 증가 (변수명++)
	BaseballPlayer(String name, double battingAverage, int homeRuns){
		this.name = name;
		this.battingAverage = battingAverage;
		this.homeRuns = homeRuns;
		playerCount++;
	}
	
	// 인스턴스 메서드
	// 선수의 타율과 홈런 수를 업데이트 하는 메서드
	// >> 매개변수로 newBattingAverage, newHomeRuns를 받아 기존의 인스턴스 변수에 재할당
	void Update(double newBattingAverage, int newHomeRuns){
		this.battingAverage = newBattingAverage;
		this.homeRuns = newHomeRuns;
	}
}

public class MethodPractice {
	public static void main(String[] args) {
		BaseballPlayer player1 = new BaseballPlayer("홍창기", 0.41, 5);
		BaseballPlayer player2 = new BaseballPlayer("레이예스", 0.43, 15);
		BaseballPlayer player3 = new BaseballPlayer("황성빈", 0.28, 2);
		
		System.out.println("총 생성된 선수의 수: "+BaseballPlayer.playerCount);
	}
}