메서드
객체의 동작(기능)
호출해서 실행할 수 있는 중괄호 블록
메소드 호출하면 중괄호 블록에 있는 모든 코드들이 일괄 실행 됨
메서드의 종류
public class Ex02 {
	public static void main(String [] args) {
		// 메서드가 필요한 이유
		// 4단
		for(int i = 1; i <= 9; i++) {
			System.out.println("4 x " + i + " = " + 4 * i);
		}
		System.out.println();
		
		// 5단
		for(int i = 1; i <= 9; i++) {
			System.out.println("5 x " + i + " = " + 5 * i);
		}
		System.out.println();
		
		// 6단
		for(int i = 1; i <= 9; i++) {
			System.out.println("6 x " + i + " = " + 6 * i);
		}
		System.out.println();
		
		// 4단 ~ 6단
		for(int dan = 4; dan <= 6; dan++) {
			for(int gop = 1; gop <= 9; gop++) {
				System.out.println(dan + " x " + gop + " = " + dan * gop);
			}
		}
		System.out.println();
		
		// 2단 5단 8단
		// 2단 출력
		int dan = 8;
		for(int gop = 1; gop <= 9; gop++) {
			System.out.println(dan + " x " + gop + " = " + dan * gop);
		}
		System.out.println();
		// 반복적으로 정의해서 사용하는 코드가 있다면 한번만 정의해서 사용
	
		gugu(2);
		gugu(5);
		gugu(7);
	}
	
	public static void gugu(int dan) {	// 피호출 메서드
		// 반복적인 코드를 메서드 안에 정의
		for(int gop = 1; gop <= 9; gop++) {
			System.out.println(dan + " x " + gop + " = " + dan * gop);
		}
	}
	
	// 메서드의 역할
	// 1. 값을 전달한다.
	// 2. 값을 받아온다.
	// 3. 반복적인 코드를 한번만 정의해서 사용할 수 있다.
}
static 메서드에서 메서드를 호출하려면 메서드가 static 메서드여야 한다.
public class Ex04 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 기본형
		int result = add(4, 5);
		System.out.println(result);
		String fullName = name("현경", "이");
		System.out.println(fullName);
		double circle = area(3, 3.14);
		System.out.println(circle);
		int rangle = rangleArea(4, 3);
		System.out.println(rangle);
		System.out.println();
	}
	
	// static 메서드에서 메서드를 호출하려면 메서드가 static 메서드여야 한다.
	// 메서드의 종류는 4가지 종류
	// 1. 기본 메서드 : 매개변수가 있고 반환 값이 있는 메서드
	public static int add(int num1, int num2) {
		return num1 + num2;
	}
	// return type은 return문 뒤에 있는 결과 값의 type을 적어준다.
	public static String name(String firstName, String lastName) {
		return lastName + firstName;
	}
	
	public static double area(int radius, double pi) {
		return radius * radius * pi;
	}
	
	public static int rangleArea(int num1, int num2) {
		return num1 * num2;
	}
}
return type은 return문 뒤에 있는 결과값의 type을 적어준다.
public class Ex05 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		add(4, 5);
		fullName("현경", "이");
		area(3, 3.14);
		rangleArea(3, 4);
		
	}
	// 2. 매개변수는 있지만 반환값이 없는 메서드
	// 반환형을 void로 적어주면 반환값이 없는 메서드가 된다.
	// 반환값이 없는 경우에는 메서드 내에서 결과를 확인할 수 있어야 한다.
	public static void add(int num1, int num2) {
		int result = num1 + num2;
		System.out.println(result);
	}
	public static void fullName(String firstName, String lastName) {
		String fullName = lastName + firstName;
		System.out.println(fullName);
	}
	public static void area(int radius, double pi) {
		double result = radius * radius *pi;
		System.out.println(result);
	}
	public static void rangleArea(int num1, int num2) {
		int result = num1 * num2;
		System.out.println(result);
	}
}
반환형을 void로 적어주면 반환값이 없는 메서드가 된다.
반환 값이 없는 경우에는 메서드 내에서 결과를 확인할 수 있어야 한다.
public class Ex06 {
	static int num1 = 3;
	static int num2 = 4;
	static String firstName = "현경";
	static String lastName = "이";
	static int radius = 3;
	static double pi = 3.14;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 3. 매개변수는 없고 반환값이 있는 메서드
		int result = add();
		System.out.println(result);
		String fullName = name();
		System.out.println(fullName);
		double circle = area();
		System.out.println(circle);
		result = rangleArea();
		System.out.println(result);
	}
	// 매개변수가 없는 경우에는 멤버필드를 이용해서 결과를 얻을 때 사용
	public static int add() {
		return num1 + num2;
	}
	public static String name() {
		return lastName + firstName;
	}
	public static double area() {
		return radius * radius * pi;
	}
	public static int rangleArea() {
		return num1 * num2;
	}
}
매개변수가 없는 경우에는 멤버필드를 이용해서 결과를 얻을 때 사용한다.
public class Ex07 {
	static int num1 = 3;
	static int num2 = 4;
	static String firstName = "현경";
	static String lastName = "이";
	static int radius = 3;
	static double pi = 3.14;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 4. 매개변수도 없고 반환 값도 없는 메서드
		add();
		name();
		area();
		rangleArea();
	}
	public static void add() {
		System.out.println(num1 + num2);
	}
	public static void name() {
		System.out.println(lastName + firstName);
	}
	public static void area() {
		System.out.println(radius * radius * pi);
	}
	public static void rangleArea() {
		System.out.println(num1 * num2);
	}
}
public class Ex08 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 매개변수의 개수를 모르는 경우
		add(3, 4);
		// 매개변수와 매개변수에 전달되는 값의 개수는 같아야 한다.
		int [] val = {1, 2, 3, 4, 5};
		sum(val);
		sum2(1, 2, 3, 4, 5);
		sum2(1, 2, 3);
		sum2(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
	}
	public static void add(int num1, int num2) {
		System.out.println(num1 + num2);
	}
	public static void sum(int [] i) {
		int sum = 0;
		for(int j : i) {
			sum += j;
		}
		System.out.println(sum);
	}
	public static void sum2(int ... i) {
		int sum = 0;
		for(int j : i) {
			sum += j;
		}
		System.out.println(sum);
	}
}