본문 바로가기
Programming/Java

[JAVA] 매서드

by 공부합시다홍아 2023. 11. 6.
 

[JAVA] 2차원 배열

[JAVA] 배열을 이용한 문제풀이 [JAVA] 정렬과 복사 [JAVA] 배열 연습 [JAVA] 소수(Prime Number) 구하기 반복문을 이용한 별만들기 [JAVA] 제어문 제어문 조건문 / 반복문 / 탈출문 조건문 특정 조건을 만족할

hong-study.tistory.com


매서드 ( Method )
  • 메서드는 반복되는 코드 블록에 이름을 붙여 놓은 것이다.
  • 메서드는 반복되는 코드를 줄여주고, 좀 더 구조화시켜 우리가 코드를 알아보기 쉽게 한다.
  • 객체지향프로그래밍에서 메서드는 ' 객체가 가져야할 기능을 구현하기 위해 만든다 '라고 표현하기도 한다.
  • 메서드의 이름 뒤에는 반드시 소괄호 ' ( ) '가 따른다.

public class Main {

	public static void main(String[] args) {
		
		System.out.println(calc());
		System.out.println(randomStr());

	}
	
	static int calc() {
		int sum=0;
		for(int i=0; i<=10; i++) {
			sum += i;
		}
		return sum;
	}
	
	static String randomStr() {
		
		double a = Math.random();
		
		String str = "";
		
		if(a > 0.66) {
			str = "가";
		}else if(a > 0.33) {
			str = "나";
		}else {
			str = "다";
		}
		
		return str;
	}

}

 

매개변수 ( Parameter )
  • 매개 변수는 메서드가 실행될 때 필요한 데이터를 외부로부터 받기 위해 사용된다.
  • 매개 변수도 일종의 변수이기에 메서드의 소괄호() 부분에 데이터 타입과 함께 선언해야 하며 초기화는 하지 않는다.
  • 매개 변수를 여러개 선언할 수 있다.
  • 메서드가 외부로부터 받을 데이터가 없다면 선언하지 않을 수도 있습니다.
  • 이때는 반환 유형을 적을때와 같이 void를 쓰지 않고 소괄호() 안을 비워둬야 합니다.

public class Main {

	public static void main(String[] args) {
		
		// 매개변수는 메서드가 전달받는 필요한 값
		
		int b = calc(10);
		System.out.println(b);
		
	}
	
	static int calc(int a) {
		
		int sum = 0;
		for(int i=1; i<=a; i++) {
			sum += i;
		}
		return sum;
	}

}
public class Main {

	public static void main(String[] args) {
			
		int b = calc(5, 10);
		System.out.println(b);
		
	}
	
	static int calc(int a, int b) {
		
		int sum = 0;
		for(int i=a; i<=b; i++) {
			sum += i;	
		}
		return sum;
	}

 

public class Main {

	public static void main(String[] args) {
		
		String d = calc4(1,10,"a");
		System.out.println(d);
		
	}
	
	static String calc4(int a, int b, String c) {
		
		String aa = "";
		for(int i=a; i<=b; i++) {
			
			aa += c;
			
		}
		return aa;
	}

}

 

반환유형 ( Return Type )
  • 반환 유형은 메서드가 실행한 후 메서드를 호출한 곳에 반환하는 값의 데이터 타입을 말한다.
  • 메서드는 반환값이 있을 수도 있고 없을 수도 있는데 없는 경우에는 반환 유형에 void를 적어줘야 한다.
  • 반환값이 있는 메서드를 호출할 때는 해당 반환 유형에 맞는 변수에 반환값을 저장해야 한다.
  • 메서드가 실행의 결과값을 반환할 때는 return이라는 키워드를 사용한다.
  • return 값이 있는 메서드는 호출문 자체가 값이 되는 경우도 있다. ( 다른 메서드의 매개값으로 사용 가능 )
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int result = add(3,6);
		System.out.println(result);
	}
	
	static int add(int a, int b) {
		
		return a+b;
	}

}
  • 반환유형이 없는 메서드는 반환유형 자리에 void 라고 적는다.
  • return 키워드는 반환과 종료의 의미를 가진다.
  • void 메서드에서 return은 단순히 종료의 의미를 가진다.
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		noReturn("피카츄");	
	}
    
	static void noReturn(String name) {
		
		if(name.equals("피카츄")) {
			System.out.println("피카피카!!!!!!!!!!!!!!!!!카카카카카!!!");
		}
		
		System.out.println(name + " 이 아니라 피카츄를 전달하세요.");
		
	}
}

위와 같이 return을 사용하지 않으면 원하는 조건에 맞아도 전부 출력하게 된다.

 

아래는 return을 사용하여 종료한 경우이다.  ( 단, return 내부에 코드 작성은 불가하다. )

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		noReturn("피카츄");
	}
    
	static void noReturn(String name) {
		
		if(name.equals("피카츄")) {
			System.out.println("피카피카!!!!!!!!!!!!!!!!!카카카카카!!!");
			return;
		}
		
		System.out.println(name + " 이 아니라 피카츄를 전달하세요.");
		
	}
}


예제
public class Main {

	public static void main(String[] args) {
		System.out.println("첫 번째 줄 ===============");
		String q1 = method1();
		System.out.println(q1);
		
		System.out.println("두 번째 줄 ===============");
		String q2 = method2("피카");
		System.out.println(q2);
		
		System.out.println("세 번째 줄 ===============");
		double q3 = method3(1 , 2 , 3.7);
		System.out.println(q3);
		
		System.out.println("네 번째 줄 ===============");
		String q4 = method4(5);
		System.out.println(q4);
		
		System.out.println("다섯 번째 줄 ===============");
		String q5 = method5("a " , 10);
		System.out.println(q5);
		
		System.out.println("여섯 번째 줄 ===============");
		long q6 = method6(10, 10000);
		System.out.println(q6);
		
		System.out.println("일곱 번째 줄 ===============");
		int q7 = method7(-10023);
		System.out.println(q7);
		
		
		
	}
	// 문자를 그대로 출력하는 메서드
	static String method1() {
		
		return "안녕";
	}
	
	// 전달받은 값을 그대로 출력하는 메서드
	static String method2(String a) {
		return a;
	}
	
    // 세 매개변수의 합을 구하는 메서드
	static double method3(int a, int b, double c) {
		
		return a+b+c;
	}
	
    // 매개변수가 짝수/홀수인지 확인하는 메서드
	static String method4(int a) {
		
		if(a % 2 == 0) {
			
			return "짝수";
		}else {
			return "홀수";
		}
	}
	
	// 문자열을 반복해서 출력하는 메서드
	static String method5(String a, int b) {
		String sum = "";	
		for(int i=0; i<=b; i++) {
			sum += a;
		}
		return sum;
	}
	
    // 두 수를 비교하는 메서드
	static long method6(long a, long b) {
		
		if(a>b) {
			return a;
		}else {
			return b;
		}
	}
	
    // 음수를 양수로, 양수는 그대로 출력하는 메서드
	static int method7(int a) {
		
		if(a<0) {
			return -a;
		}else {
			return a;
		}
	}

}

예제 - 여러가지 메서드들의 결합
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
	// 두 수를 입력받아서 두 수의 합을 구하는 메서드
	// 메서드 내부에서 입력ㅂ다아 리턴하는 메서드
	// add 두 수의 합을 더해서 결과를 리턴하는 메서드
	// 결과를 받아서 출력하는 메서드
		
		print();
		int b = input();
		int c = input();
		int d = add(b,c);
		result(d);

	}
	
	// 문자열 출력하는 메서드
	static void print() {
		System.out.println("두 정수를 입력하세요");
	}
	
	// 값을 입력받는 메서드
	static int input() {
		Scanner sc = new Scanner(System.in);
		System.out.print("> ");
		int a = sc.nextInt();
		return a;
	}
	
	// 입력받은 값을 계산하는 메서드
	static int add(int a, int b) {
		return a+b;
	}
	
	// 계산된 결과를 반환하는 메서드
	static void result(int a) {
		System.out.println("두 수의 합 : " + a);
	}	
}

매개변수 n을 받아서, n까지 약수의 합을 리턴하는 문제
static int test(int n) {
	int sum = 0;
		
	for(int i=1; i<=n; i++) {
			
		if(n%i==0) {
			sum += i;
		}
	}
	return sum;
}
두 수를 매개변수로 받아서, 두 수사이의 합을 구하는 문제
static int add(int a, int b) {
	int sum2 = 0;
		
	if(a>b) {
		for(int i=b; i<=a; i++) {
			sum2 += i;
		}
		return sum2;
	}else if(b>a) {
		for(int i=a; i<=b; i++) {
			sum2 += i;
		}
		return sum2;
	}else {
		return 0;
	}
}

 

매개변수를 입력받아, "자바"의 단어를 1이면 자 / 2이면 자바 / 3이면 자바자 순으로 출력하는 문제
static int input() {
	Scanner sc = new Scanner(System.in);
	System.out.print("입력 정수를 입력하세요 : ");
	int a = sc.nextInt();
	return a;
}
	
static String ja(int b) {
	String jas = "자바";
	String sum = "";
		
	for(int i=1; i<=b; i++) {
		char a = jas.charAt(1);
		char c = jas.charAt(0); 
			
		if(i % 2 == 0) {
			sum += a;
		}else {
			sum += c;
		}
			
	}
	return sum;
}
728x90

'Programming > Java' 카테고리의 다른 글

[JAVA] 객체와 클래스  (0) 2023.11.08
[JAVA] 스택(Stack)과 큐(Queue)  (0) 2023.11.07
[JAVA] 2차원 배열  (0) 2023.11.03
[JAVA] 배열을 이용한 문제풀이  (2) 2023.11.03
[JAVA] 정렬과 복사  (0) 2023.11.02