자바

JAVA 자바 메소드 - 메소드 선언

알통몬_ 2017. 3. 12. 19:19
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

메소드 : 객체의 동작에 해당하는 중괄호 {} 블록

-중괄호 블록은 이름을 가지고 있는데 이것이 메소드 이름입니다. 

-메소드를 호출하면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행. 

-메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 합니다. 

-메소드는 객체 간의 데이터 전달의 수단으로 사용됩니다. 

-외부로부터 매개값을 받을 수도 있고 실행 후 어떤 값을 리턴할 수도 있습니다.


메소드 선언

 선언부와(리턴타입, 메서드이름, 매개변수선언)와 실행 블록으로 구성.

메소드 선언부를 메서드 시그니처라고도 합니다.

 리턴타입 메소드이름([매개변수선언,...]){

         실행할 코드를 작성하는 곳

                ..................

      }


리턴타입 : 메서드가 실행 후 리턴하는 값의 타입

메소드는 리턴값이 있을 수도 있고 없을 수도 있습니다. 

메소드가 실행 후 결과를 호출한 곳에 넘겨줄 경우에는 리턴값이 있어야 합니다. 

턴값이 없는 메소드 : 리턴타입에 void가 와야하고

리턴값이 있는 메소드 : 리턴값의 타입이 와야합니다.

ex)

 void powerOnOff() { ... }

 double plus(int x , int y) { ... }

리턴값이 있느냐 없느냐에 따라 호출방법도 조금 다릅니다.

powerOnOff();

double result = plus(10,20);


메소드 이름

 메소드 이름은 자바 식별자 규칙에 맞게 작성하면 됩니다.

-숫자로 시작하면 안되고 $ , _ 를 제외한 특수문자를 사용하면 안된다.

-관례적으로 메서드명은 소문자로 작성한다.

-서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫머리 글자는 대문자로 작성한다.

ex)

 void run() { ... }

 void startPoint() { ... }

 String getName() { ... }

 int[] getScores() { ... }

메소드 이름은 어떤기능을 하지는 알기 쉽게 주는 것이 좋다.


매개 변수 선언

 매개 변수는 메서드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용합니다. 

매개 변수도 필요한 경우가 있고 필요 없는 경우가 있습니다. 

 예를 들어 powerOnOff() 메소드는 그냥 전원만 켜고 끄면 그만이지만, 

plus() 메소드는 더할 두 수가 필요합니다.

 따라서 powerOnOff() 메소드는 매개 변수가 필요 없고, plus() 메소드는 매개 변수가 2개 필요합니다.

 void powerOnOff() { ... }

 double plus(int x , int y) { ... }


예제1) :메소드 선언

public class Calculator {

//메소드

void powerOn() {

System.out.println("전원을 켭니다.");

}

int plus(int x, int y) {

int result = x + y;

return result;

}

double divide(int x, int y) {

double result = (double)x / (double)y;

return result;

}

void powerOff() {

System.out.println("전원을 끕니다");

}

 

}

예제2) : 메소드 호출

public class CalculatorExample {
public static void main(String[] args) {
Calculator myCalc = new Calculator();
myCalc.powerOn();
int result1 = myCalc.plus(5, 6);
System.out.println("result1: " + result1);
byte x = 10;
byte y = 4;
double result2 = myCalc.divide(x, y);
System.out.println("result2: " + result2);
myCalc.powerOff();
}
}

매개 변수의 수를 모를 경우

 예를 들어 여러 개의 수를 모두 합산하는 메소드를 선언해야 한다면, 

몇 개의 매개 변수가 입력될지 알 수 없기 때문에 변수의 갯수를 결정할 수 없을 것입니다.

 해결책은 매개 변수를 배열 타입으로 선언하는 것입니다.

int sum(int[] values) { }

sum() 메소드를 호출할 때 배열을 넘겨줌으로써 배열의 항목 값들을 모두 전달할 수 있습니다.

 배열의 항목 수는 호출할 때 결정됩니다.


int[] values = {1,2,3};

int result = sum(values);

int result = sum(new int[] = {1,2,3,4,5};


 배열을 생성하지 않고 값의 리스트만 넘겨주는 방법도 있습니다. 매개 변수를 

"..." 을 사용해서 선언하게 되면 메소드 호출 시 넘겨준 값의 수에 따라 

자동으로 배열이 생성되고 매개값으로 사용됩니다.

 int sum2(int ... values) { }

...으로 선언된 매개 변수의 값은 아래와 같이 메소드 호출 시 리스트로 나열해주면 됩니다.

int result = sum2(1,2,3);

int result = sum2(1,2,3,4,5);

... 으로 선언된 매개 변수는배열 타입이므로 배열을 직접 매개값으로 사용해도 됩니다.

int[] values = {1,2,3};

int result = sum2(values);

int result = sum2(new int[] = {1,2,3,4,5};

 

매개 변수를 모를 경우 예제)

예제1)

public class Computer {

int sum1(int[] values) {

int sum = 0;

for(int i=0; i<values.length; i++) {

sum += values[i];

}

return sum;

}

int sum2(int ... values) {

int sum = 0;

for(int i=0; i<values.length; i++) {

sum += values[i];

}

return sum;

}

 

}

예제2)


public class ComputerExample {

public static void main(String[] args) {

Computer myCom = new Computer();

int[] values1 = {1, 2, 3};

int result1 = myCom.sum1(values1);

System.out.println("result1: " + result1);

int result2 = myCom.sum1(new int[] {1, 2, 3, 4, 5});

System.out.println("result2: " + result2);

int result3 = myCom.sum2(1, 2, 3);

System.out.println("result3: " + result3);

int result4 = myCom.sum2(1, 2, 3, 4, 5);

System.out.println("result4: " + result4);

}

 

}

반응형