[Java] 자바 #9 메소드, 메서드(Method)
- 프로그래밍 언어/Java
- 2019. 2. 3. 17:45
메소드, 메서드(Method)
main메소드
특별한 메소드
프로그램이 시작되자 마자 가장 처음으로!!! 자동으로 호출되는 메소드 (JRE,VM에 의해 호출)
프로그램 시작점(Start Point) ~ 프로그램 종착점(End Point)
main: 예약어임. 즉 키워드.
메소드, Method
- 특정 행동을 목적으로 하는 코드의 집합
- 행동(Behavior)
- 반복되는 코드의 집합 -> 코드의 재사용.
메소드를 만들어야하는 경우!!
1. 같은 성격의 코드가 모여있는 경우. >> 코드의 가독성 개선
2. 같은 성격의 코드가 2번이상 사용되는 경우. >> 메소드 재사용
요구사항 : "안녕하세요"라는 인삿말을 5번 화면에 출력.
1 2 3 4 5 6 | public static void hello(){ //메서드 헤더(==메서드 시그니처), 메서드 형식 //메서드 바디, 코드의 집합 -> 명령어 집합 -> 구현부 System.out.println("안녕하세요."); } //메소드 선언하기 | cs |
main 메소드 -> hello();hello();hello();hello();hello(); -> 실행해보기
하지만 이 메소드는 특정 누구의 이름을 부르며 "안녕하세요" 하지는 않는다.
요구사항 : "홍길동님. 안녕하세요." 라는 인삿말을 5번 화면에 출력
1 2 3 | public static void hello(String name){ System.out.println(name+"님. 안녕하세요."); } | cs |
main 메소드 -> hello("홍길동");hello("홍길동");hello("홍길동");hello("홍길동");hello("홍길동"); -> 실행해보기
메소드의 인자(Parameter)
Parameter, Argument, 매개변수, 인자
매개변수는 (선언할 때의 자료형과 갯수) == (호출할 때의 자료형과 갯수)
인자를 활용해서 행동의 범위를 넓힌다.
위의 hello 메소드에서 (String name)이라는 부분을 메소드의 파라미터, 인자라고 부른다.
반환자료형
- 메소드를 호출한 뒤에 돌려받는 값. 결과값.
- return문과 관련이 있다.
1 2 3 4 5 6 7 8 9 10 | public void voidMethod(){ //행동 } public int intMethod(){ //행동 return 10; } public String stringMethod(){ return "String"; } | cs |
public 다음에 나오는 키워드를 보면 void, int, String이 있습니다.
- void : return문을 사용하지 않아도 된다. 즉, 반환타입이 없다.
- int : 원시타입(기본타입) 자료형으로 int형 데이터만 return 하라는 키워드이다.
- String : 참조형 자료형으로 String타입으로 선언된 변수나 문자열을 반환하라는 뜻이다.
응용하기
요구사항
2개의 정수값을 넘겨주면 정수값을 교환하여 출력하는 메소드.
2개의 String값을 넘겨주면 String값을 교환하여 출력하는 메소드.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void swap(int a,int b){ int temp; System.out.printf("a : %d, b : %d\n",a,b); temp=a; a=b; b=temp; System.out.printf("a : %d, b : %d\n",a,b); }//swap public static void swap(String a,String b){ System.out.printf("a : %s, b : %s\n",a,b); String temp; temp=a; a=b; b=temp; System.out.printf("a : %s, b : %s\n",a,b); } | cs |
추가내용
메소드 오버로딩. Method Overloading(**)
- 같은 이름의 메소드를 여러개 만드는 방법.
메소드 오버로딩 조건
1. 매개변수의 갯수가 달라야 한다.
2. 매개변수의 타입(형)이 달라야 한다.
3. 이름이 다르면 오버로딩이라고 할 수 없다.
예제 코드
- 요구사항 : 두개의 데이터를 전달하면 그 둘을 더해서 출력할 것.
1 2 3 4 5 6 7 8 | public static void sum(int a, int b){ System.out.printf("%d + %d = %d\n",a,b,a+b); } public static void sum(double a, double b){ System.out.printf("%.1f + %.1f = %.1f\n",a,b,a+b); } | cs |
sum(5,5) : 10 출력
sum(5.5,5.5) : 11.0 출력
sum(5, 5.0) -> 안됨.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #11 Date, Calendar 클래스 (0) | 2019.02.05 |
---|---|
[Java] 자바 #10 재귀메소드(feat. factorial,최대공약수,최대공배수) (0) | 2019.02.04 |
[Java] 자바 #8 BufferedReader (0) | 2019.02.03 |
[Java] 자바 #7 에러 종류 (0) | 2019.02.02 |
[Java] 자바 #6 연산자 (0) | 2019.02.02 |