본문 바로가기

Language/Java 기본

메서드

『메서드』

어떤 클래스 내에서 특정 기능을 하는 함수

Scanner 내의 NextInt등

 

메서드는 패러미터(매개변수)를 받아 반환을 위해 클래스 내에 선언하는 하나의 기능 함수이다.

 

예를들어  equlas는 받아온 매개변수 [스트링] 을 통해

반환값을 boolean 으로 변환해 true 혹은 false를 출력한다.

 

쉽게 설명하면 nextInt(); 처럼 소괄호가 붙는 것들을 대부분 메서드라 부른다.

 

 

함수

 

입력값(매개변수) => 함수 => 결과값(반환값)

 

『 메서드의 사용 이유 』

 

객체의 행위를 표현

반복적으로 사용되는 코드 최소화

작업을 수행하기 위해 명령문을 집합

 

 

public class ex01 {
public static void main(String[] args) {
	
	int bb = addNumber(1,2); // 호출한 메서드 addNumber에 대한 결과를 저장할 변수를 선언하거나
	
	System.out.println(bb);
	System.out.println(addNumber(2,4)); // 출력문에 직접 메서드를 표기
	
}

public static int addNumber(int num1, int num2)
{
	
	
	return num1+num2; // addNumber 메서드의 결과를 반환
}
}

가장 기본적인 메서드의 생성 및 사용 예제이다.

여기서 호출된 메서드 addNumber는 num1과 num2 매개변수의 합산값을 반환한다.

 

※ 메서드는 호출하지 않으면 실행되지 않는다.

 

public class ex02 {
public static void main(String[] args) {//void는 반환하지 않겠단 의미임..
	
	studentInfo("Kal", 43, 1);
	
	
	
	
	
	
}

public static void studentInfo(String name, int age, int grade) {//void는 반환하지 않겠단 의미임.., 따라서 출력 후 종료하겠단 것..

	
	System.out.println("name :" +name);
	System.out.println("age :" +age);
	System.out.println("grade :"+grade);
	
	//함수의 흐름  메인 -> studentInfo 를 호출받아 이름,나이,학년을 입력받고 studentInfo에서 동작.

}

//학생의 정보를 입력한 후 출력하는 StudentInfo메서드 설계 , 이름,, 나이 ,학년등..


}

다음과 같이 메인이 메서드에서 입력값을 입력받고

메서드에서 출력을 담당하도록 설계할 수도 있다.

 

 

import java.util.Scanner;

public class ex04 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int num1 = 50;
		int num2 = 15;
		char op = '-';

		System.out.println(cal(num1, num2, op));

	}

	public static int cal(int num1, int num2, char op) {
		int od = 0;

		if (op == '+') {

			od = num1 + num2;

		} else if (op == '-')

		{

			od = num1 - num2;

		} else if (op == '*')

		{

			od = num1 * num2;

		} else if (op == '/')

		{

			od = num1 / num2;

		}

		return od;
	}


}

정수 2개와 연산자를 초기화하고

메서드를 호출해 해당 메서드가 정수 2개 및 연산자에 따라 결과값 od를 반환하는 것으로

od는 cal 메서드 안에서 사용되는 변수로, 입력받은 cal 메서드의 값에 대한 반환 결과값이다.

 

 

자료형은 int 를 반환하였으니 void 가 아닌 int를 사용한다.

 

case문 등을 사용하면 break; 문이 사용 되는데

Return은 함수의 종료를 의미하기 때문에, 그 뒤에 break문 등이 나올 수 없고

변수등을 만들어 초기화하고  케이스 안에서 사용하며, 메서드의 맨 마지막에 반환 시켜 사용할 수 있다. 

public class ex05 {
	public static void main(String[] args) {

		int a = 30;
		int b = 40;

		System.out.println(largerNumbers(a, b));

	}

	public static int largerNumbers(int a, int b) {
		int over = 0;
		if (a > b) {
			return a;
		}

		else if (a < b) {

			return b;
		}

		else {

			return 0;
		}

	}

}

 

입력 받은 (정의된 a, b ) 를 반환값으로 그대로 반환하는 경우.

 

 

 

 

 

public class ex06 {
public static void main(String[] args) {
	
	
	int a = 17;
	int b = 14;
	
	System.out.println(close10(a,b));
	
	
}


public static int close10(int a, int b)
{
	
	if (10 - Math.abs(a) > 10 - Math.abs(b))
	{
		return a;
	}
	else if ( 10 - Math.abs(a)  < 10 - Math.abs(b)  )
	{
		return b;	
	}
	else { return 0;}
	
}

}

입력받은 두 정수 중 10에 가까운수를 출력하는 메서드이다.

절댓값을 구하기 위해 Math 클래스의 abs 메서드를 활용하였다.

10 - math.abs(a) 와 같이 사용하여도 되며, 보편적으로 사용할 경우 Math.abs(10-a) 와 같이 쓸 수도 있다.

 

 

 

public class ex08 {
	public static void main(String[] args) {

//int[] arr2 = new int[]	

		int a = 56;
		divisior(a);
		divisior(65537);

	}

	public static void divisior(int a) {

		for (int i = 1; i <= a; i++) {

			if (a % i == 0) {
				System.out.printf("%d ", i);
			}
		}
		System.out.println();
	}
}

 

입력받은 a에 대한 약수를 출력하는 메서드를 생성하였다.

 

 

 


public class ex09 {
	public static void main(String[] args) {

//int[] arr2 = new int[]	

		int a = 10;
		int b = 15;
		divisior(a, b);

	}

	public static void divisior(int a, int b) {

		for (int j = a; j <= b; j++) {
			System.out.printf("%d 의 약수 :", j);
			for (int i = 1; i <= j; i++) {

				if (j % i == 0) {
					System.out.printf("%d ", i);
				}
			}
			System.out.println();
		}
	}
}

입력받은 두 정수 범위 까지의 약수를 구하는 메서드를 생성하였다.

 

 

 

'Language > Java 기본' 카테고리의 다른 글

클래스와 객체  (0) 2021.01.07
객체 지향프로그래밍 (Object Oriented Programming)  (0) 2021.01.07
배열의 사용  (0) 2021.01.05
do ~ While 문  (0) 2021.01.04
for문의 응용  (0) 2021.01.04