728x90
메소드(Method)
- 메소드(Method), 함수(Function), 프로시저(Procedure), 서브루틴(SubRoutine)
- 코드의 집합
- 같은 목적을 가진 코드의 집합
- 메소드 사용
- 1. 메소드 선언하기
- 1회
- public | static | void | hello | ()
- 접근지정자 | 정적키워드 | 반환자료형 | 메소드명 | 인자리
- 2. 메소드 호출하기
- 1회 ~ 무한대
- 1. 메소드 선언하기
- ex)
public static void main(String[] args) {
/*
메소드, Method
- 메소드(Method), 함수(Function), 프로시저(Procedure), 서브루틴(subRoutine)
- 코드의 집합
- 같은 목적을 가진 코드의 집합
메소드 사용
1. 메소드 선언하기
- 1회
2. 메소드 호출하기
- 1회 ~ 무한대
요구사항] "안녕하세요." x 5번 출력
수정사항] "반갑습니다." 로 바꿔주세요.
*/
//Ctrl+C, Ctrl+V > 생산성 포함x > 유지 보수성 낮음
// System.out.println("안녕하세요.");
// System.out.println("안녕하세요.");
// System.out.println("안녕하세요.");
// System.out.println("안녕하세요.");
// System.out.println("안녕하세요.");
System.out.println("반갑습니다.");
System.out.println("반갑습니다.");
System.out.println("반갑습니다.");
System.out.println("반갑습니다.");
System.out.println("반갑습니다.");
//보완하기 : 메소드를 호출하여 생산성 늘리기
//메소드 호출하기 > 메소드 사용하기 > 메소드 내의 코드를 실행한다.
hello();
hello();
hello();
hello();
hello();
} //main
//메소드 선언하기
//public static void hello () <- 선언부, 시그니처(sign)
//접근지정자 정적키워드 반환자료형 메소드명 인자리스트
//코드의 재사용성
public static void hello() {
//구현부(Body)
//- 메소드가 하려는 업무 코드 구현
System.out.println("반갑습니다.");
}
- 메소드 인자리스트
- 인자리스트, 인자(Arguments)
- 파라미터(Parameter)
- 매개변수
- 메소드를 호출할 때 값을 전달해서, 메소드 내에서 사용할 수 있게 해주는 역할
- 메소드 활용도를 높여줌. > 메소드 가용성 향상
- ex)
public static void main(String[] args) {
/*
접근지정자 정적키워드 반환자료형 메소드명(인자리스트) {
구현부
}
메소드 인자리스트
- 인자리스트, 인자(Arguments)
- 파라미터(Parameter)
- 매개변수
- 메소드를 호출할 때 값을 전달해서, 메소드 내에서 사용할 수 있게 해주는 역할
- 메소드 활용도를 높여줌. > 메소드 가용성 향상
*/
hello();
hello2();
hello3();
hello4();
hi("홍길동"); //hi(String name)
hi("아무개");
hi("김경민"); //실인자 : 실제로 들어가는 인자
checkAge(25);
checkAge(15);
//호출 시 주의할 점
//1. 인자값의 순서
//2. 인자값의 개수
score("홍길동", 100, 95, 80);
score("아무개", 90, 85, 90);
//score 입력후, fn+control+space누르면 이전에 무서주석을 작성하였던 도움말이 뜨게됨.
}//main
//요구사항] 나이를 전달 > 성인 or 미성년자 판단
public static void checkAge(int age) {
String result = age >= 19 ? "성인" : "미성년자";
System.out.printf("입력한 %d세는 %s입니다.\n", age, result);
}
// 문서주석, Document Comment
//- 기능이 있는 주석(개발 도구 등에서 사용하는 주석)
// /** 입력하고 Enter치면 아래와 같은 파라미터 값이 나옴.
/**
* 성적을 출력합니다.
* @parma name 이름
* @param kor 국어점수
* @param eng 영어점수
* @param math 수학점수
*/
public static void score(String name, int kor, int eng, int math) {
System.out.println();
System.out.println("=======================");
System.out.printf(" %s의 성적표\n",name);
System.out.println("=======================");
System.out.printf("국어 : %4d점\n", kor);
System.out.printf("영어 : %4d점\n", eng);
System.out.printf("수학 : %4d점\n", math);
System.out.printf("총점 : %4d점\n", kor + eng + math);
System.out.printf("평균 : %4.1f점\n", (double)(kor + eng + math) / 3);
}
- 문서 주석(Document Comment)
- 기능이 있는 주석(개발 도구 등에서 사용하는 주석)
- /** 입력 후 Enter를 치게 되면 자동으로 파라미터 값들이 나오게 됨.
- void가 아닌 int, String형 등을 사용할 때는 return을 입력해 주어야 한다.
- ex)
public static void main(String[] args) {
/*
접근지정자 정적키워드 반환자료형 메소드명(인자리스트) {
구현부
}
*/
int num = getNum(); //호출 되면서 여기에 10을 놓고 사라짐.
System.out.println(num);
//이전 checkAge() > 나이 검사 + 결과 출력
//현재 checkAge() > 나이 검사
String result = checkAge(25);
System.out.println(result);
}//main
//This method must return a result of type int
//이렇게 void가 아닌 int,String형 등을 사용할 때는 return을 꼭 해주어야 한다.
public static int getNum() {
//리턴문, 반환문
//- return 키워드 사용한다.
//- return 뒤의 값 1개(***)를 돌려주는 역할
return 10;
}
public static String checkAge(int age) {
String result = age >= 19? "성인" : "미성년자";
return result;
}
- 메소드 사용 시 주의할 점
- 항상 그 메소드의 형식을 꼭 보고 사용해야한다.
- 메소드끼리의 선언 순서는 아무 상관없다.
- ex) int num = getNum();
- 만약 이 메소드의 위치를 찾는다면 방법(정의된 곳으로 이동)
- 1. 오른쪽 상단의 outLine이용
- 2. getNum(); 블로킹 후, F3키를 누른다.(Mac은 fn+F3)
- 3. 왼쪽 Ctrl(맥은 Command)
- 주석 사용시 Tip
- TODO : 강조하는 역할, Tasks에 다 기록되어 있음.
- XXX : 제거해야할 사항
- FIXME : 고쳐야 할 것
- 메소드 자동 생성
- 해당 메소드를 블록을 잡고, 마우스 오른쪽 Refector-method-refecteor-메소드 이름적으면 생성
- main 메소드 안에 score(); 이렇게 입력 후에 Ctrl+1 (Mac은 command+1) 을 누르면 자동으로 생성됨.
- ex)
public class Ex25_Method {
public static void main(String[] args) {
int num = getNum();
// 만약 이 메소드의 위치를 찾는다면 방법(정의된 곳으로 이동하는 방법)
// 1. 오른쪽 상단의 outLine
// 2. getNum(); 블로킹 하고, F3키 (맥은 fn+f3키)
// 3. 왼쪽 Ctrl(맥은 command) - open Declaretion
//이클립스 기능(메소드 관련)
//********* 동일한 목적을 가지는 동일한 코드가 2번 이상 반복되면 안된다!!!!!!
//잘못 만든 예
/* System.out.println("안녕하세요.");
System.out.println("반갑습니다.");
System.out.println("환영합니다.");
//블록잡고, 마우스오른쪽, Refector-method refector-메소드 이름적으면 생성됨.
System.out.println("안녕하세요.");
System.out.println("반갑습니다.");
System.out.println("환영합니다."); */
//잘 만든 예
hello();
//----------------------
}//main()
public static void hello() {
System.out.println("안녕하세요.");
System.out.println("반갑습니다.");
System.out.println("환영합니다.");
}//hello()
public static void test() { //안의 body보다 header가 더 중요함.
System.out.println("one");
//Void methods cannot return a value :void메소드는 return 값을 가질 수 없음.
//return 100;
//리턴문
//1. 값을 돌려준다.
//2. 메소드를 종료한다.
//빈 리턴문
//1. 메소드를 종료한다.
return;
//System.out.println("two");
}//test()
public static int getNum() {
System.out.println("하나");
return 100; //이 문장을 만나는 순간 반환. > 즉, 메소드가 여기서 종료.
// 따라서 return문 뒤에는 절대 코드를 작성하면 안됨.
//에러 : Unreachable code > 이 코드는 실행할 수 없어요.
//System.out.println("둘");
}//getNum()
}
728x90
'자바' 카테고리의 다른 글
JAVA STEP 13. Method 예제 모음 (0) | 2023.02.07 |
---|---|
JAVA STEP 12. LocalVariable & Method Overloading (0) | 2023.02.07 |
JAVA STEP 10. 자바 예제모음 (0) | 2023.02.06 |
JAVA STEP 9. Operator (0) | 2023.02.06 |
JAVA STEP 8. Casting (0) | 2023.02.06 |