개발 지식/Java

[Java] 메서드(1) - 메서드의 정의

devGSP 2022. 8. 1. 08:00
반응형
이 게시물은 아래 버전을 기준으로 작성되었습니다.

Java : 11.0.15.1
OS : Windows 10 Pro
IDE : Eclipse IDE for Enterprise Java and Web Developers - 2022-06

 

메서드의 정의

 

우선 포스트를 읽기에 앞서 새로운 패키지를 생성하자.

 

com.[본인 닉네임].study.classnmethod

 

 

메서드란?

 

메서드(method)란 클래스(class) 내부에 정의되어 클래스의 기능을 구현해 놓은 것으로, 프로그램의 실제 작업을 처리하는 영역을 말한다.

 

 

메서드 선언 문법

 

[접근 제어 지시자] (static) [리턴 타입] [메서드 이름] ([매개 변수(들)]) {
    [메소드 내용];
}

 

아래는 문법의 세부 사항에 대한 개략적인 설명이다. 추후 하나씩 포스트를 통해 다룰 것이니 현재는 이런 것이 있다는 것만 알아두고 넘어가자.

 

 

* 접근 제어 지시자(access control specifiers)

 

해당 메소드에 접근할 수 있는 권한을 표시하는 키워드. private, default, protected, public이 있다. 추후에 게시할 포스트에서 상세히 다룰 예정이며, 그전까지는 우선 public만을 사용하도록 하겠다.

 

 

* static

 

클래스 멤버 여부를 지정하는 키워드. 생략하면 인스턴스 멤버로 인식된다. 클래스 멤버와 인스턴스 멤버에 대한 내용도 추후 다룰 예정이다. 참고로 main 메서드가 있는 클래스의 메서드는 무조건 public static으로만 선언이 가능하다.

 

 

* 리턴 타입(return type)

 

메소드의 실행 결과를 가져올지 여부와 실행이 끝난 후 리턴값(가져올 결과값)의 자료형을 지정하는 부분이다. 리턴값을 가져오지 않을 경우에는 void를 입력한다. 예를 들어 리턴 타입을 int로 지정하면 해당 메서드는 반드시 실행 후 리턴값으로 int형의 값을 리턴해야 한다.

모든 종류의 자료형을 지정할 수 있으며 클래스 또한 하나의 자료형으로 인식하여 class를 리턴할 수도 있다.

 

 

* 매개 변수(들)

 

작업 시 필요한 데이터들을 메서드 호출 시 받아오는 기능으로 경우에 따라 없을 수도 있다. 메서드 시작과 동시에 생성되며, 메서드 실행 종료 시 매개 변수도 같이 소멸한다. 인수, 파라미터(parameter), 아규먼트(argument) 등으로도 불린다.

 

 

우선은 아래의 예시들을 보고 맛보기를 해 보자.

 

 

메서드 사용 예시

 

1. 파라미터가 요구되지 않는 void 메서드

 

package com.devgsp.study.classnmethod;

public class Method1 {
	public static void main(String[] args) {
		System.out.println("main 메서드 시작");
		helloWorld();	// helloWorld 메서드 실행
		introduce();	// introduce 메서드 실행
	}
	
	// helloWorld 메서드 정의
	public static void helloWorld() {
	// main() 메서드가 있는 클래스의 메서드는 무조건 public static으로만 선언이 가능하다.
		System.out.println("===helloWorld()===");
		System.out.println("Hello, World!");
		System.out.println("=======================");
	}
	
	// introduce 메서드 정의
	public static void introduce() {
		String idx = "0000A1004";
		String name = "하이브리드 샘이솟아 리오레이비";
		String gender = "남";
		String position = "백엔드 엔지니어";
		int age = 35;
		
		System.out.println("===introduce()===");
		System.out.println("지원 번호 : " + idx);
		System.out.println("지원 분야 : " + position);
		System.out.println("이름 : " + name);
		System.out.println("성별 : " + gender);
		System.out.println("나이 : " + age);
		System.out.println("=======================");
	}
}

 

method1
Method1.java 실행 결과

 

 

 

2. 파라미터가 요구되는 void 메서드

 

package com.devgsp.study.classnmethod;

public class Method2 {
	public static void main(String[] args) {
		System.out.println("main 메서드 시작");
		String name1 = "GSP";
		String name2 = "고길동";
		
		helloSomeone("World");	// helloSomeone 메서드 실행1
		helloSomeone(name1);	// helloSomeone 메서드 실행2
		helloSomeone(name2);	// helloSomeone 메서드 실행3
		
		String myIdx = "0000A1005";
		String myName = "김경완";
		String myGender = "남";
		String myPosi = "DB 엔지니어";
		int myAge = 32;
		
		introduce2("0000A1004", "하이브리드 샘이솟아 리오레이비", "남", "백엔드 엔지니어", 35);	// introduce2 메서드 실행1
		introduce2(myIdx, myName, myGender, myPosi, myAge);	// introduce2 메서드 실행2
	}
	
	// 파라미터가 요구되는 helloSomeone 메서드 정의
	public static void helloSomeone(String target) {
		System.out.println("===helloSomeone()===");
		System.out.println("Hello, " + target + "!");
		System.out.println("=======================");
	}
	
	// 파라미터가 요구되는 introduce2 메서드 정의
	public static void introduce2(String idx, String position, String name, String gender, int age) {
		System.out.println("===introduce2()===");
		System.out.println("지원 번호 : " + idx);
		System.out.println("지원 분야 : " + position);
		System.out.println("이름 : " + name);
		System.out.println("성별 : " + gender);
		System.out.println("나이 : " + age);
		System.out.println("=======================");
	}
}

 

method2
Method2.java 실행 결과

 

 

 

3. 파라미터가 요구되지 않는 return 메서드

 

package com.devgsp.study.classnmethod;

public class Method3 {
	public static void main(String[] args) {
		System.out.println("main 메서드 시작");
		String msg = getMsg();	// String 타입을 리턴하는 getMsg 메서드 실행
		
		System.out.println(msg);
		
		int angel = getNum();	// int 타입을 리턴하는 getNum 메서드 실행
		
		System.out.println("당신은 " + angel);
	}
	
	// String 타입을 리턴하는 getMsg 메서드 정의
	public static String getMsg() {
		return "Hello, World!";
	}
	
	// int 타입을 리턴하는 getNum 메서드 정의
	public static int getNum() {
		int angel = 1004;
		
		return angel;
	}
}

 

Method3.java 실행 결과

 

 

 

4. 파라미터가 요구되는 return 메서드

 

package com.devgsp.study.classnmethod;

public class Method4 {
	public static void main(String[] args) {
		System.out.println("main 메서드 시작");
		final double MY_HEIGHT = 1.7;
		final double MY_WEIGHT = 73.0;
		
		double bmiCalc = getMyBmi(MY_HEIGHT, MY_WEIGHT);	// getMyBmi 메서드 실행
		
		System.out.println("몸무게는 " + MY_WEIGHT + "kg, " + "키는 " + MY_HEIGHT + "m입니다.");
		System.out.println("BMI 지수는 " + bmiCalc + "입니다.");
		System.out.println("============================");
		
		int num1 = 1004;
		int num2 = -100;
		int num3 = 0;
		
		String isPlus1 = isPlus(num1);	// isPlus 메서드 실행1
		String isPlus2 = isPlus(num2);	// isPlus 메서드 실행2
		String isPlus3 = isPlus(num3);	// isPlus 메서드 실행3
		
		System.out.println("isPlus1 : " + isPlus1);
		System.out.println("isPlus2 : " + isPlus2);
		System.out.println("isPlus3 : " + isPlus3);
	}
	
	// double 타입 파라미터 2개(키, 몸무게)를 요구하는 리턴 메서드 getMyBmi 정의
	public static double getMyBmi(double height, double weight) {
		// 비만도 측정(BMI 지수) 공식은 [몸무게 / 키의 제곱] (kg/㎡)
		return weight / (weight * height);
	}
	
	// int 타입 파라미터를 요구하는 리턴 메서드 isPlus 정의
	public static String isPlus(int target) {
		String returnStr = "";
		
		if (target > 0) {
			returnStr = "양수임!";
		} else if (target < 0) {
			returnStr = "음수임!";
		} else {
			returnStr = "둘 다 아님!";
		}
		
		return returnStr;
	}
}

 

Method4.java 실행 결과

 

 

 

[예제]

1. com.devgsp.study.classnmethod
패키지에 MyMethod1 클래스를 생성하자.
2. 삼각형과 직사각형의 넓이를 구하는 메서드를 정의하자. 알맞은 파라미터를 요구하는 void 메서드 myCalc를 정의하자.
3.
밑변과 높이는 반드시 저장할 변수 혹은 상수를 선언하여 파라미터를 넘겨 준다.
4. 작성하는 밑변과 높이의 단위를 cm로 전제한다.
5.
아래와 같은 메시지가 출력되도록 프로그램을 작성해 보자.

밑변이 XX센티미터, 높이가 YY센티미터일 때, 삼각형의 넓이는 ZZZ제곱센티미터입니다.
밑변이 XX센티미터, 높이가 YY센티미터일 때, 직사각형의 넓이는 ZZZ제곱센티미터입니다.

 

더보기
package com.devgsp.study.classnmethod;

public class MyMethod1 {
	public static void main(String[] args) {
		final double WIDTH = 17.5;
		final double HEIGHT = 21.0;
		
		myCalc(WIDTH, HEIGHT);
	}
	
	public static void myCalc(double width, double height) {
		double triCalc = (width * height) / 2;
		double rectCalc = (width * height);
		
		System.out.println("밑변이 " + width + "센티미터, 높이가 " + height + "센티미터일 때, 삼각형의 넓이는 " + triCalc + "제곱센티미터입니다.");
		System.out.println("밑변이 " + width + "센티미터, 높이가 " + height + "센티미터일 때, 직사각형의 넓이는 " + rectCalc + "제곱센티미터입니다.");
	}
}

 

method5
MyMethod1.java 실행 결과

 

반응형

'개발 지식 > Java' 카테고리의 다른 글

[Java] break / continue  (0) 2022.07.20
[Java] 중첩 반복문  (0) 2022.07.19
[Java] For 반복문  (0) 2022.07.18
[Java] While / Do-While 반복문  (0) 2022.07.17
[Java] Switch 분기문  (0) 2022.07.16