본문 바로가기
Java/Java 이론 정리

[Java] 16~17일차: 메소드

by ProSeraphina 2020. 7. 6.

1. 메소드: 특정 작업을 수행하기 위한 컴퓨터 명령문의 집합

    → 한 개의 기능만 수행 
    → 세분화 작업: 재사용성, 중복코드 제거 목적(import 사용)

   *** 명령문 → 메소드 → 클래스 → 패키지 → .jar(라이브러리)

 

2. 메소드 종류에 따른 분류

사용자 정의 메소드  - 선언부: 반환형 메소드명(매개변수1, 매개변수2)
                       ======변수의 명명규칙과 같음
   구현부:  {   return값; → 값=반환형 
                  예외) 반환형 없는 경우 → void; return 생략 가능(∵JVM이 자동으로 추가)
               } 
 - 메소드 안에서 처리  ┌ 출력(일반 도스) 
                                  └ 결과값 전송(웹, 윈도우) 
 - 호출: 반환형 변수명=메소드명(값1, 값2)
           값을 넘겨주면 매개변수 자리에 대입, 메소드가 처리해서 결과값 돌려줌.
           메소드 수행종료(return)되면 호출된 위치로 돌아옴.
라이브러리 메소드  

 

3. 메소드 생성방법에 따른 분류

정적 메소드  - 자동으로 메모리에 저장
 - static 리턴형 메소드명(매개변수1,2...){
          return 값
    }
인스턴스 메소드  - 프로그래머가 메모리를 만든 다음 저장
    →new 연산자를 이용해서 저장 가능
 - 리턴형 메소드명(매개변수1,2...){
          return 값 
    }
추상 메소드  - 메소드의 선언부만 사용 → 추상클래스(인터페이스)
 - 리턴형 메소드명(매개변수1,2...);

 

4. 메소드 유형

반환값(리턴형) 매개변수 예시
O O String substring(int s, int e)
O X int length()
double random()
X(void) O System.out.println(String s)
X(void) X System.out.println() →다음 줄에 출력

   * 메소드는 클래스 내에 존재해야함
  ** 메소드 안에 메소드는 선언할 수 없음
 *** 메소드 이름은 같을 수 있음 → overloading

**** 가변 매개변수(...): 매개변수의 타입과 개수가 모호할 때 사용

                             ex)String... a

                                 Object... obj :모든 데이터형 커버 가능


* 예시) 사칙연산 메소드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//사칙연산
import java.util.*;
public class 자바메소드2{
    static int plus(int a,int b) {
        return a+b;
    }
    
    static int minus(int a,int b) {
        return a-b;
    }
    
    static int gob(int a,int b) {
        return a*b;
    }
   
//매개변수 유효성 검사
    static void div(int a,int b) {
        if(b==0)
            System.out.println("0으로 나눌 수 없습니다.");
        else
            System.out.printf("%d/%d=%d.2f\n",a,b,a/(double)b);
    }
    
    public static void main(String[] args){
        //사용자 요청값 → 정수 2개 입력받기
        Scanner sc=new Scanner(System.in);
        System.out.print("정수 입력(5 2):");
        int a=sc.nextInt();
        int b=sc.nextInt();
        System.out.print("연산자 입력(+,-,*,/):");
        String op=sc.next();
        int result=0;
        switch(op) {
        case "+":
            result=plus(a,b);
            System.out.printf("%d+%d=%d\n",a,b,result);
            break;
        case "-":
            result=minus(a,b);
            System.out.printf("%d-%d=%d\n",a,b,result);
            break;
        case "*":
            result=gob(a,b);
            System.out.printf("%d*%d=%d\n",a,b,result);
            break;
        case "/":
            div(a,b);
            System.out.printf("%d/%d=%d\n",a,b,result);
            break;
        default:
            System.out.println("잘못된 연산자입니다!");
        }
        
 
    }
 
}
cs

* 메소드 원형 작성연습: 리턴형 메소드이름(매개변수)

    사용자가 요청한 값(개수)  → 구현
  1) 데이터 10개(영화제목) 넘겨주는 메소드 
    → String movieList();  
  2) 사용자가 ID/PW 입력하면 로그인(true)/실패(false) 
    → boolean logIn(String id, String pw) 
  3) 영화 번호를 넘겨주면 장르를 넘겨주는 메소드 
    → String getGenre(int no)
  4) 검색을 하면 찾은 영화명을 넘겨주는 메소드제작 
   → String movieFind(String searchString)
  5) 영화예매 상위 5개를 넘겨주는 메소드 제작 
   → String[] pop5()
   6) ID 중복체크
      boolean idCheck(String id)
   7) 우편번호 찾기
      String[] postFind(String dong)
   8) 검색 → 검색된 내용 출력
         String[] find(String ss)
   9) 영화 리뷰
         String[] review(String re) 
         

댓글