JAVA

day05) 함수(메서드)

code_learner 2021. 12. 27. 22:16
  • 함수(메서드)란?

여러 명령들의 나열된 묶음, 입력 값을 받아서 내부에서 처리 후 결과를 출력 또는 반환하는 역할.

함수는 여러 명령들을 하나의 이름으로 호출 함으로써, 한번에 명령을 내리고자 하기 위해 사용한다

(코드의 재사용성 증가)

 

 


 

  • 함수의 3요소★
  1. input-인자, 인수, 입력값, 매개변수, 파라미터, args
  2. output-리턴값, return, 반화값, 출력값, 결과값
  3. 기능
	public static void hello(){//input x output x
		System.out.println("안녕하세요! :D");
	}
	
	public static void printI(int num) {//input o, output x
		num=100;
		System.out.println("num= "+num);//결과: 100
		
	}
	
	public static void main(String[] args) {//ctrl+f11: main을 돌리겠다.

		//함수는 [호출] 되어야만 동작함!!
		hello();
		hello();//코드가 "재사용" 됨!!
		hello();
		
		int num = 123;//주소를 배정하여 123값을 저장
		printI(num);//함수에 123이라는 값을 인자로 보냄(주소를 보내는 것이 아님)
       
		System.out.println("num="+num);
        //결과: 123
        //함수끼리의 변수는 다른 공간을 사용한다
         //배열은 다름
	}

 

  • 오버로딩: 함수(메서드) 중복정의

일반적으로 함수의 이름은 다르나, 기능이 같거나 매우 유사 할시 함수명이 서로 달라 헷갈리는 경우가 생긴다. 따라서 JAVA는 함수명의 중복정의를 허용한다.

 

- 메서드 시그니처: input의 개수, output의 자료형, 기능

- 오버로딩은 매개변수의 개수와 타입은 다르지만 이름이 같은 함수를 여러개 정의하는 것.

public static void func(int num1, int num2) {
		if(num1!=num2) {
			int max=num1>num2?num1:num2;
			System.out.println(max);
		}else if(num1==num2) {
			System.out.println("두 정수는 같습니다");
		}
		
	}
	public static void func(double num1, double num2) {
    //인자의 자료형이 다름
		if(num1!=num2) {
			double max=num1>num2?num1:num2;
			System.out.println(max);
		}else if(num1==num2) {
			System.out.println("두 정수는 같습니다");
		}
		
	}
	public static void func(int num1, int num2, int num3) {
    //인자의 개수가 다름
		if(num1>num2) {
			if(num1>num3) {
				System.out.println(num1);
			}else {
				System.out.println(num3);
			}
		}else{
			if(num2>num3) {
				System.out.println(num2);
			}else {
				System.out.println(num3);
			}
		}
		
	}
	public static void main(String[] args) {
		
		func(1.3, 4.123);
		func(1,4);
		func(1,2,3);
        
        //4.123
		//4
		//3
	}

 


  • 반환타입과 return값

return값: 함수에 구현된 모든 명령 실행 후, 함수가 갖게 될 결과 값-> 값을 반환하기 위해 사용한다.

      -return값은 함수를 즉시 종료해 주기 위해서도 사용된다.

return type(반환타입): 반환하는 값의 자료형, return값이 없으면 retunr type은 void이다.

     

   public static void func(int n) {//1
      if(n<1) {
         System.out.println("사용불가능!함수를 즉시종료");
         return;//함수를 즉시 종료해주는 역할
      }
      
         int sum=0;
         for(int i=1;i<=n;i++) {
            sum+=i;
         }
         System.out.println(sum);
      
   }
   public static void func(int n1,int n2) {//2
      if(n1>n2) {
         int tmp=n1;
         n1=n2;
         n2=tmp;
      }
      int sum=0;
      for(int i=n1;i<=n2;i++) {
         sum+=i;
      }
      System.out.println(sum);
   }

   public static void main(String[] args) {
		
        //메서드 오버로딩
      func(100);//1번 메서드: 5050
      func(10,12);//2번 메서드: 33

   }