함수 (Function)
 
  - 기능을 미리 정의해두고 나중에 불러서 쓰는 것 

- 함수는 미리 정의만 해둔것이기 때문에 어딘가에서 호출하지 않으면 아무것도 실행되지 않는다
  
함수의 매개변수 (Parameter)
  
  - 함수를 호출할 때 해당 함수에 원하는 값을 전달하기 위해 만들어두는 변수

 - 함수를 호출할 때 ()에 순서대로 값을 전달해야 하고 이  값을 '인자(Argument)'라고 부른다 

- 함수를 정의할 때 ()에 인자를 받기위해 선언하는 변수 

- 매개변수의 개수에는 제한이 없다
  - 매개변수가 몇 개 올지 모를때 ... 을 활용하면 인자를 무한대로 받을 수 있다
  
함수의 리턴 타입
  
  - 함수의 이름 앞에 붙이는 타입은 해당 함수를 호출하고 난 후 받환되는 값의 타입을 의미한다 - void는 반환되는 값이 아무것도 없는
  함수라는 뜻
  - 함수의 리턴 타입이 void가 아닌 함수는 반드시 return을 통해 함수를 호출한 곳에 값을 반환해야 한다
  
return

  - 리턴 타입이 void가 아닌 함수에서는 반드시 실행되어야 한다
  - 함수 내에서 return을 만나는 즉시 해당 함수를 종료하고 호출한 곳으로 값을 반환한다

public static void rabbit() {
		System.out.println(" /)/)");
		System.out.println("(  ..)");
		System.out.println("(   >$");
	}
public static void main(String[] args) {
rabbit();
}

 

 

나중에 받을 값으로 미리 로직을 구성할 수 있다

public static void plusNumbers(int num1, int num2) {
		System.out.println(num1 + num2);
	}

 

type... : int를 1개 이상 받겠다 배열타입으로 받는다

public static void plussAll(int... num) {
		int sum = 0;
		for (int i = 0; i < num.length; i++) {
			sum += num[i];
		}
		System.out.printf("전달한 모든 숫자의 합은 %d 입니다.\n", sum);
	}

type...을 쓰고 난 이후에는 다른 매개변수를 선언할 수 없다
type...은 항상 가장 마지막 매개변수로 사용해야한다

 

 

public type method() {};

여기서 type에 들어가는 값에 따라서 return을 넣어야하는지, return 값이 뭐가 오는지가 달라진다

 

void : 이 함수는 호출해봤자 아무값도 돌려받지 못한다 (return 값을 안써줘도 된다)

int, String, boolean : 이 함수는 호출하면 무조건 맞는 return값을 돌려줘야한다 

 

public static int plus2(int num) {
		return num + 2; // return : 이 함수를 호출한 곳에 원하는 값을 돌려준다
	}

 

함수 오버로딩 (Overloading)

 

- 같은 이름의 함수를 다양한 버전으로 여러개 만드는 것
- 같은 이름으로 다른 버전이 되기 위해서는 매개변수의 개수 또는 타입이 달라야 한다
- 리턴 타입이 다른것만으로는 다른 버전으로 인정되지 않는다

 

public static int add(int a) {
		return a + 10;
	}

 

ex> 리턴 타입이 다른것만으로는 다른 버전으로 인정되지 않는다

리턴 타입만 달라서 에러

 

매개 변수의 개수는 같지만 타입이 다른 오버로딩

public static double add(double a) {
		return a + 10;
	}

 

 매개변수의 개수가 다른 오버로딩

public static int add(int a, int b) {
		return a + b;
	}

 

'JAVA' 카테고리의 다른 글

정적 영역(static)  (0) 2024.05.08
객체지향 프로그래밍 (Object Orientaed Programming)  (0) 2024.04.29
배열 (Array)  (0) 2024.04.23
랜덤 클래스,함수 (Random)  (0) 2024.04.23
반복문 (while문)  (0) 2024.04.22

+ Recent posts