[배열과 메소드] 메소드의 개요
자바1. 메소드의 개요
1) 메소드를 사용하는 이유
만약 전교생 10000명의 국어 점수를 입력해야 한다면?
코드가 굉장히 지저분해 질것임
[1] 코드를 간결하게 만들고자 할 때
여러번 실행해야 하는 코드가 있다면 메소드를 만들어 놓고 호출하여 사용
[2] 기능을 만들고자 할 때
기능별로 나누어서 프로그램을 작성하면, 나중에 그 기능별로 따로 가져다 사용 할 수 있음
2) 메소드의 형식
[접근제한자 ] [지정예약어] 반환형 메소드명 (매개변수)
예외전가{.....} -> throws IOException
[1] 접근 제한자
private (자신의 클래스에서만 사용되도록 제한)
default(동일한 폴더에서만 사용되도록 제한)
protected (동일한 폴더 + 상속받은 클래스로 제한)
public (객체가 선언된 곳이면 어디에서든 사용)
[2] 지정예약어
class편에서 자세히 알아보자
static : 지금 수업에선 static만 알아두자
final
static final
abstract
synchronized
native
[3] 반환형
기본자료형 int double
참조자료형 class를 객체화 -> class 보고 나서
void - 반환형이 없을 때 사용
[4] 메소드명
사용자 정의 명칭으로 형식에 맞게 입력
첫글자는 영문 소문자,_,$
[5] 매개변수
메소드 사용시 필요한 값을 받을 수 있는 곳
[6] 예외전가 throws IOException
예외가 발생하여 전가를 시키고자 할 때
3) 메소드 사용 예
4) 메소드의 4가지 형식
5) main 메소드 구성
main=> public static메소드만 호출 가능
6) 메소드 예제
두수를 입력 받아 그 합을 구하는 프로그램
package aaa;
import java.io.IOException;
import java.util.*;
public class methodTest1 {
 public static void main(String[] args) throws IOException{
  int su1 = input();        //input 매개변수 없었음
  int su2 = input();
  int sum = plus (su1,su2);    //두 수의 합이니깐 두수를 넣어 주어야 함 
  output(sum);
 }
  public static int input() {
   Scanner sc = new Scanner(System.in);
   System.out.print("임의의 수를 입력:");
   int su = sc.nextInt();
   return su;
  }
  public static int plus(int su1, int su2) {
   return su1+su2;
 }
  public static void output(int sum) {
   System.out.println("입력하신 수의 합:"+sum);
  }
}
^메인을 복잡하게 만들지 않습니다
7) 메소드 오버로드
메소드 오버로드 : 메소드의 이름을 여러번 사용 할 수 있는 기능
메소드의 이름이 같고, 매개변수가 틀린 메소드 집합
매개변수가 틀린다는 말은, 자료형이 다르거나, 매개변수의 개수가 다르거나, 자료형 순서가 다른 것을 말함
반환형은 조건에 해당하지 않음
c언어 함수이름
객체지향 언어 함수이름+매개변수
8) 메소드 오버로딩
두 수를 입력 받아 그 합을 알려주는 프로그램
public byte add(byte a, byte b) {
return (byte)(a+b);
}
public int add (int a, int b) {
return a+b;
}
public double add(double a, double b) {
return a+b;
}
}
9) 메소드 재귀호출
-> 메소드 내에서 자신을 또 호출 할 때 주의 할점은 반드시 종료 시점이 있어야 함
public static void disp(){
disp();
}
단점 : 끝나는 시점이 없음 , 오버플로우가 됨
팩토리얼 계산 프로그램
5! =120 이라는 결과가 나올 수 있도록 메소드 작성
(사람풀이) 5! = 5 *4 *3 *2 *1 =120
(컴퓨터의 풀이) 5! = 5*4!; 4!=4*3! = 3*2! ; 2! = 2*1! ; 1!=1
실습 : 피보나치 수열을 알아보고 프로그램을 작성
package aaa;
import java.util.*;
import java.io.*; // 한글자 입력 
public class dd43 {
 public static void main(String[] args)throws IOException {
  // 두개의 수와 한개의 산술연산자를 입력받아 그 연산자 대로 하는 프로그램
  //단, 연산자가 뺼셈일 떄는 큰수에서 작은 수를 빼서 결과를 알려주세요
  //단, 나눗셈일 때는 2번째 수가 0이면 1로 고쳐서 결과를 알려주세요
  
  //메소드를 이용하여 만들기
  Scanner sc = new Scanner(System.in);
  
  int su1 = input();
  int su2 = input();
      System.out.print("산술연산자를 입력:");
          char op =(char)System.in.read(); //한글자 입력
  int result =0;
      switch(op) {
          case '+':
               result = plus(su1,su2);
               break;
              case '-':
           result = min(su1,su2);
                   break;
          case '*':
              result = mul(su1,su2);
               break;
          case '/':
               result = div(su1,su2);
                   break;
   
       default :
            System.out.println("연산자를 잘못 입력 하셨습니다." );
  }
  System.out.println("결과:"+result);
 }
 public static int plus(int a ,int b) {
  return a+b;
 }
 public static int min(int a, int b) {
  if(a>b) return a-b;
  else return b-a;   //큰수에서 작은 수 빼야하니깐
 }
 
 
 public static int mul (int a, int b) {
  return a*b;
 }
 public static int div(int a, int b) {
  if(b==0) b=1; //만약 b가 0이면 b를 1로 바꿔줘라 
  return a/b;
 }
 public static int input() {
  Scanner sc = new Scanner(System.in);
  System.out.print("임의의 수를 입력:");
  int su = sc.nextInt();
  return su;
  
  
  
 }
}
----------------------------------------------
package aaa;
import java.util.*;
public class Exam_02 {
public static void main(String [] args) {
//팩토리얼 구하기
Scanner sc =new Scanner(System.in);
System.out.print("팩토리얼의 수를 입력:");
int facSu = sc.nextInt();
System.out.printf("%d의 팩토리얼 결과값은 %d입니다.\n", facSu , factorial(facSu));
}
public static int factorial(int n) {
if(n==1) return 1;
return n* factorial(n-1);
}
}
팩토리얼의 수를 입력:5
5의 팩토리얼 결과값은 120입니다.
--------------------------------------
package aaa;
public class Exam_03 {
  public static void main(String[] args) {
   //피보나치 수열 구하기
   //1,1,2,3,5,8,13,21,34,55,89,........
   
   for ( int i =1 ; i <10 ; ++i) {
      System.out.print(Pivo(i)+" , ");
   }
   System.out.println(Pivo(10));
   
  }
  public static int Pivo(int n) {
   if(n<=2) return 1;
   return Pivo(n-2) + Pivo(n-1);
  }
}
1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55
'자바' 카테고리의 다른 글
| [중첩클래스 및 상속, 다형성, 추상화, 인터페이스] 클래스기초2 (0) | 2018.09.12 | 
|---|---|
| [중첩 클래스 및 상속, 다형성, 추상화, 인터페이스 ] 클래스 기초 1 (0) | 2018.09.10 | 
| [배열과 메소드]배열의 개요 (0) | 2018.09.10 | 
| 반복문 (0) | 2018.09.10 | 
| 제어문 (0) | 2018.09.10 |