[Java] 메소드(1)
카테고리: Java
태그: coding Programming Java
메소드란?
메소드(method)는 어떤 특정 작업을 수행하기 위한 명령문의 집합
메소드 사용목적
- 중복되는 코드를 메소드로 만들어 코드 반복사용을 피할 수 있다
- 코드이 가독성이 좋아진다
- 기능변경이 필요한 경우 메소드 부분만 수정하면 되기 때문에, 손쉬운 유지 보수가 가능하다
메소드의 호출방법
- 클래스명 사용할이름 = new 클래스명(); //객체생성
- 사용할이름.메소드명(); //메소드 호출
package com.ohgiraffers.section01.method;
public class Application1 {
public static void main(String[] args) {
System.out.println("main() 시작됨...");
Application1 app = new Application1();
app.methodA();
System.out.println("main() 끝...");
}
public void methodA() {
System.out.println("뱀 선생님 출근입니다!!");
methodB();
System.out.println("뱀 선생님 퇴근입니다!!");
}
public void methodB() {
System.out.println("9시 30분에 수업을 시작합니다");
methodC();
System.out.println("6시 20분에 수업을 끝냅니다");
}
public void methodC() {
System.out.println("점심시간 시작 1시 30분입니다");
System.out.println("점심시간 끝은 2시 30분입니다.");
}
}
- 출력값
main() 시작됨...
뱀 선생님 출근입니다!!
9시 30분에 수업을 시작합니다
점심시간 시작 1시 30분입니다
점심시간 끝은 2시 30분입니다.
6시 20분에 수업을 끝냅니다
뱀 선생님 퇴근입니다!!
main() 끝...
다른 흐름의 메소드 호출 흐름에 대해 이해할 수 있다
- methodA(), methodB(), methodC() 를 차례대로 작성한다
- 작성 후 메소드 호출 확인과 실행 종료 출력 구문을 확인하고 다시 현재 위치로 돌아온다
- 메인메소드 시작을 확인하기 위한 출력 구문을 작성한다
package com.ohgiraffers.section01.method;
public class Application2 {
public static void main(String[] args) {
System.out.println("main 시작");
/* 4. methodA(), methodB(), methodC()를 차례대로 호출*/
Application2 app2 = new Application2();
app2.methodA();
app2.methodB();
app2.methodC();
/*5.메인 메소드 종료를 확인하는 출력구문을 작성한다.*/
System.out.println("main 끝");
/*6.main을 실행하여 전체적인 소스 흐름을 파악한다.*/
}
public void methodA(){
System.out.println("정규수업 시작함");
System.out.println("정규수업 끝남");
}
public void methodB(){
System.out.println("취업특강 시작함");
System.out.println("취업특강 끝남");
}
public void methodC(){
System.out.println("선생님과 상담하는 날입니다.");
System.out.println("선생님과 상담이 끝났습니다.");
}
}
- 출력값
main 시작
정규수업 시작함
정규수업 끝남
취업특강 시작함
취업특강 끝남
선생님과 상담하는 날입니다.
선생님과 상담이 끝났습니다.
main 끝
메소드 전달인자와 매개변수에 대해 이해하고 메소드 호출 시 사용할 수 있다
- 전달인자(argument)와 매개변수(parameter)를 이용한 메소드 호출
- 지금까지 공부한 변수는 지역변수에 해당한다
변수의 종류
- 지역변수
- 매개변수
- 전역변수(필드)
- 클래스(static)변수
지역변수는 선언한 메소드 블럭 내부에서 사용이 가능하다. 이것을 지역변수의 스코프라고한다 다른 메소드간 서로 공유해야하는 값이 존재하는 경우 메소드를 호출시 괄호를 이용해서 값을 전달할 수 있다 이때 전달하는 값을 전달인자(argument)라고 부르고 메소드 선언부 괄호안에 전달 인자를 받기 위해 선언하는 변수를 매개변수(parameter)라고 부른다
package com.ohgiraffers.section01.method;
public class Application3 {
public static void main(String[] args) {
Application3 app3 = new Application3();
/* 전달인자와 매개변수를 이용한 메소드 호출테스트 */
/*1. 전달인자로 값 전달 테스트*/
app3.testMethod(40);
//app3.testMethod("40"); //매개변수는 int형이지만 인자 String이기 때문에 호출할 수 없다.
//app3.testMethod(20,30,40); //매개변수는 int이지만 인자는 3개이기 때문에 호출할 수 없다.
/* 2. 변수에 저장한 값 전달 테스트 */
/* 2-1. 변수에 저장한 값을 이용하여 값을 전달할 수 있다.*/
int age= 20;
app3.testMethod(age);
/* 2-2 자동형변환을 이용하여 값을 전달할 수 있다.*/
byte byteAge = 10;
app3.testMethod(byteAge);
/*2-3.강제형변환을 위용하여 값을 전달할 수 있다.*/
long longAge = 80;
//app3.testMethod(longAge); //자동 형변환을 할 수 없어서 에러발생
app3.testMethod((int) longAge); //데이터 손실의 주의
/*2-4. 연산결과를 이용해서 값을 전달할 수 있다.*/
app3.testMethod(age + 3);
}
public void testMethod(int age){
System.out.println("당신의 나이는 " + age + "세 입니다.");
}
}
- 출력값
당신의 나이는 40세 입니다.
당신의 나이는 20세 입니다.
당신의 나이는 10세 입니다.
당신의 나이는 80세 입니다.
당신의 나이는 23세 입니다.
여러개의 전달인자를 이용한 메소드 호출 테스트
package com.ohgiraffers.section01.method;
public class Application4 {
public static void main(String[] args) {
/*수업목표. 여러개의 전달인자를 이용한 메소드를 호출할 수 있다.*/
/* 여러 개의 전달인자를 이용한 메소드 호출 테스트*/
/* 1.여러 개의 매개변수를 가진 메소드 호출 */
Application4 app4 = new Application4();
app4.testMethod("홍길동",20,'남');
// app4.testMethod(20,"유관순",'여'); //값의 갯수는 맞지만 순서가 다르게 전달되면 호출하지 못합니다.
/* 2.변수에 저장된 값을 전달하여 호출할 수 있다.*/
String name = "유관순";
int age = 20;
char gender = '여';
app4.testMethod(name, age, gender);
}
public void testMethod(String name, int age, final char gender){
System.out.println("당신의 이름은 "+name+ "이고, 나이는 " +age+ "세 이며 성별은 " +gender+ "입니다.");
}
}
- 매개변수도 일종의 지역변수로 분류된다.
- 매개변수도 final 키워드를 사용할 수 있다
- 지역변수에서 final 키워드를 붙여 상수를 만드는 것과 동일하다
- final의 매개변수는 상수 네이밍 규칙을 선택적으로 따르는 경향이 있다.
- 출력값
당신의 이름은 홍길동이고, 나이는 20세 이며 성별은 남입니다.
당신의 이름은 유관순이고, 나이는 20세 이며 성별은 여입니다.
댓글 남기기