메소드, 리턴값, void,

2019. 3. 8. 19:01JAVA

================================메소드================================


메소드란 


객체의 동작을 해당하는 중괄호 {}블록, 객체 안에 존재하는 함수,

입력받은 내용을 처리하기위해 수행문이 가지고 있는것을 메소드라고 한다.

즉 수행문을 가지고있는 이름있는 코드


객체를 사용하는게아니라 객체를 만들고 클래스의 속성을 사용하며 메소드의 기능을

불러온다 식으로 생각하자





메소드를 사용하는 이유


메소드를 사용하지 않을경우 코드가 많이 길어지며 코드의 수정이 어렵다. 그래서 

일관성이 떨어진다. 그래서 메소드를 만들면 유지보수성등 많이 향상된다.



 


#메소드의 구조


이름, 입력 동작, 출력 로 되었으며 입력, 동작, 출력 모두있는 구조, 입력, 동작 구조,

동작, 출력 구조, 동작만 있는구조등 가능하다




#void

void는 동작 후 출력값을 담을게 없는경우 쓴다.만약 리턴값이 있으면 void를 안쓴다.




#리턴값 

메소드를 계산하고 최종적으로 얻어지는 값 반환타입, 반환값이라고도 한다.

리턴값이 있으면 반드시 return 값;을 해야함




출력 이름(입력) {

동작(수행문)

동작(수행문)

}


      예시)-----------------------------------------------------------------

void main(String[] args){


}


(void - 출력, main - 이름, String[] args - (스트링 문자배열)입력)



void 이름(){

동작 -->    동작만한다 비어있는

} 출력이 없으면 void라한다.



void 이름(타입 변수명){

동장 --> 입력받을때 이름옆 ()에 적는다.

}


예시)-----------------------------

정수 10입력받을때 void(int 10)

문자열 가나다 void(String 가나다)

실수 10.9 void(double 10.9)






실행

void 예시)--------------------------------------------------------------------

public class Hello {


// 메소드

// 입력 / 출력 없음, 동작 있음

void morning() {

System.out.println("좋은 아침입니다.");

System.out.println("좋은 하루 보내세요.");

}

//메소드 정의

// 입력값있음/ 반환값 없음, 동작있음

void greeting(String x) {

System.out.println(x+"님 반갑습니다.");

}


// 메소드 정의

// 입력값있음/ 반환값 없음, 동작 있음

void promise(String name, int hour){

System.out.println(name+"님 "+hour+"시에 만납시다.");

        }


} //만들고



---- ---- ---- ---- ---- ---- ---- ----


hello.morning(); // morning 기능 호출


hello.greeting("호기도");

hello.greeting("ㅇㄹㅇ");

hello.promise("김유신", 8);

hello.promise("김택진", 11);


String username="이재헌";

hello.promise(username, 10); // 입력값도 가능


}

}


[출력]-------------

좋은 아침입니다.

좋은 하루 보내세요.

호기도님 반갑습니다.

ㅇㄹㅇ님 반갑습니다.

김유신님 8시에 만납시다.

김택진님 11시에 만납시다.

이재헌님 10시에 만납시다.



# 기능을 호출할때 입력값을 안넣거나 순서, 타입이 다를경우 에러가 발생한다.





return 값 예시)-------------------------------------------------------------------

public class Calculate {


// 메소드 정의

// 입력값 있음, 반환값 있음, 동작 있음


int plus(int x, int y) { // 반환값이 있어 void대신 출력할 int 작성

int z = x+y;

return z; //return 키워드는 메소드를 호출한 곳에 z에 보관된 값을 제공(반환)한다.

}

// 메소드 정의

// 입력값 있음, 반환값 있음, 동작있음

// 원의 넓이

double circleArea(int r){

double result = 3.141592 * (r * r);

return result;

}

}



---- ---- ----- ----- ----- ---- ----- ---- ---


public class CalculatorApp {

public static void main(String[] args){

Calculate c = new Calculate();


int r = c.plus(5, 7);

System.out.println("덧셈결과 "+r);


double r1 = c.circleArea(4);

double r2 = c.circleArea(8);

System.out.println("원의 넓이 "+r1);

System.out.println("원의 넓이 "+r2);

}

}


[출력]---------------------------

덧셈결과 12

원의 넓이 50.265472

월의 넓이 201.061888





반환값타입 메소드이름(입력값타입 변수면, 입력값타입 변수명, ...){

수행문;

수행문;

}



// 반환값이 없는 메소드 ---> 역할 : 동작의 수행이 목적

void 메소드이름(입력값타입 변수명, 입력값타입 변수명, ...){

수행문;

수행문;

}


#출력시

리모콘(객체 명).메소드이름();

리모콘(객체 명).메소드(입력값, 입력값, ...);




// 반환값이 있는 메소드 ---> 역할 : 동작 수행 후 값의 제공이 목적

반환값타입 메소드이름(입력값타입 변수명, 입력값타입 변수명, ...){

수행문;

수행문;

return 값;

}


#출력시

반환타입 변수명 = 리모콘(객체명).메소드이름();

반환타입 변수명 = 리모콘(객체명).메소드이름(입력값, 입력값, ...);




----------------------------------------------------------------------------

검색어를 입력받아서 검색결과를 제공하는 기능 - 반환값이 있는 메소드

String[] search(String keyword) {

......

......

return 결과값;

}



학번을 입력받아서 그 학생의 정보를 삭제하는 기능 - 반환값이 없는 메소드 void

void deleteStudent(int studentNo){

....

....

}



최근 주문내역을 제공하는 기능 - 반환값이 있는 메소드

String[] orderHistory() {

....

....

return 결과값;

}



학번을 입력받아서 그 학번의 학생정보를 제공하는 기능

Student getStudentInfo(int studentNo){

....

....

return 학생정보를 포함하는 Student객체;

}