본문 바로가기

JAVA

메소드

반응형
SMALL
메소드란?
  1. 메소드는 클래스가 가지고 있는 기능으로 클래스 안에서 선언된다.
  2. 입력값이 있고, 그 입력값을 받아서 무언가 한 다음 결과를 도출해 내는 수학의 함수와 비슷한 개념이다.
  3. 이때 입력값을 매개변수라고 하고, 결과값을 리턴값이라고 한다.
  • 인자( Argument ) 는 메소드를 사용할 때 메소드의 매개변수로 전달될 값을 의미한다.
  • 매개변수( Parameter ) 는 그 전달된 인자를 받아 사용될 변수를 의미한다.

       * 인수와 매개변수는 같은 의미로 볼 수 있다.

 

※ 특징

  • 소스코드의 간결화(코드의 가독성을 위해서)
  • 코드의 재사용(특정성을 부여하면 재사용 하기 어려움)
  • 모듈화(부품)
public class MainTest {

	// 메인메소드는 컴파일러가 실행해준다.
	// 메인메소드는 가장 먼저 실행되는 메소드이다.
	public static void main(String[] args) {
		System.out.println("Hello");

	}

}

 

메소드 선언
public class MethodTest1 {

	// 메소드 선언
	
	// 사용자에게 숫자 2개를 입력받아 합계를 반환해주는 메소드를 선언
	int sum(int num1, int num2) {
		return num1 + num2;
	}

	// static한 메소드 사용(static한 메소드는 Class가 인스턴스화 되지 않아도 사용할 수 있다.)
	static int minus(int num1, int num2) {
		return num1 - num2;		
	}
	
	public static void main(String[] args) {

		MethodTest1 md = new MethodTest1();
        
		// 방법1. 클래스를 이용
		int num = md.sum(10, 5);
		System.out.println(num); // 15
		
		// 방법2. static 키워드 이용
		int num2 = minus(20, 5);
		System.out.println(num2); // 15
		
	}

}

 

다양한 형태의 메소드

void printMyName(String name) {
      System.out.println(name);
   }

                    ↕


   void : 리턴값이 없다는 의미. 리턴값의 타입(리턴타입)
   printMyName : 메소드의 이름
   String : 매개변수의 타입
   name : 매개변수 
   System.out.println(name) : 실행할 코드

public class MethodTest2 {

	// MethodTest2 클래스 영역의 안
    
    // ex1)
	void getThreeMuliple() {
		int count = 0;
		for (int i = 1; i < 101; i++) {
			if (i % 3 == 0) {
				count++;
			}
		}
		System.out.println("3의 배수는 " + count + " 개 있습니다.");
	}


	// ex2)
	// 리턴값이 있고, 타입은 정수형, 메소드명은 getEvenNum, 매개변수는 없음
	int getEvenSum() {

		int sum = 0;
		for (int i = 1; i < 101; i++) {
			if (i % 2 == 0) {
				sum += i;
			}
		}
		return sum; // sum을 getEvenSum()으로 반환한다.
	}


    // ex3)
	void getDriveLicense(int age) {
		// if문
		if (age >= 19) {
			System.out.println("자동차 면허 취득 가능");
		} else if (age >= 17) {
			System.out.println("오토바이 면허 취득 가능");
		} else {
			System.out.println("도보가능");
		}

		// 삼항연산자
		String result = null;
		result = age >= 19 ? "자동차 면허 취득가능" : age >= 17 ? "오토바이 면허 취득가능" : "도보가능";
		System.out.println(result);
	}


    // ex4)
	// 문자열끼리 값을 비교할때는 == 대신에 equals() 메소드 사용
	boolean login(String id, String pw) {
		String userId = "taetae"; // 매개변수 일치 여부 확인
		String userPw = "tae1234"; // 매개변수 일치 여부 확인
		boolean isTrue = false; // return값 초기화

		// a.equals(b) -> a와 b 문자열 값이 일치하는지 확인
		if (id.equals(userId)) {
			isTrue = pw.equals(userPw) ? true : false;
		}

		return isTrue;
	}


	public static void main(String[] args) {

		MethodTest2 md = new MethodTest2(); // MethodTest2의 주소값을 받아오기 때문에 한 번만 선언시켜준다.

		// ex1)
        // 매개변수X 리턴값X
		// 1~100중에서 3의 배수가 몇개있는지 출력하는 메소드

		md.getThreeMuliple();


		// ex2)
        // 매개변수X 리턴값O
		// 1~100중에서 짝수의 합을 반환하는 메소드 선언 후 값을 받아서 출력해주기

		System.out.println(md.getEvenSum()); // 2550

		int num = md.getEvenSum(); // 2550
		System.out.println(num); // 위의 출력 변수명과 비교했을 때 num을 선언하면 의미하는 바가 무엇인지 알기 용이하다.

		// 메소드 선언 : 메소드 밖에서! (클래스 안에서)
		// 메소드 사용 : 메소드 안에서! (main메소드 안에서)


		// ex3)
        // 매개변수O 리턴값X (입력메소드 사용X)
		// 사용자에게 나이를 입력받고 취득할 수 있는 운전면허를 출력해주는 메소드
		// 자동차: 19세이상 오토바이: 17세 이상

		md.getDriveLicense(20); // 정수 20을 int age로 parameter해준다.


		// ex4)
        // 매개변수O 리턴값O (입력메소드 사용X)
		// 아이디: taetae 비밀번호: tae1234
		// 사용자에게 아이디와 비밀번호를 입력받고 아이디와 비밀번호가 일치했을 경우 true, 실패했을시 false 반환 메소드

		boolean checkLogin = md.login("taetae", "tae1234");
		System.out.println(checkLogin); // true

	}

}

 

반응형
LIST

'JAVA' 카테고리의 다른 글

상속(Inheritance)  (0) 2022.11.10
클래스  (0) 2022.11.06
배열  (0) 2022.10.23
제어문  (0) 2022.10.19
연산자(Operator)  (0) 2022.10.17