728x90
반응형
1. 메서드 정의하기
메서드: 클래스의 기능에 해당하는 요소
ex) 클래스(사람) - 메서드(먹기, 잠자기, 공부하기 등)
클래스(자동차) - 메서드(전진하기, 후진하기, 회전하기 등)
(1) 메서드 정의의 문법적 구조
자바 제어자 리턴(반환)타입 메서드명(입력매개변수) {
// 메서드 내용
}
ex) public static int sum(int a, int b) {
// 메서드 내용
}
(2) 메서드의 장점
- 중복코드 재사용
- 코드의 모듈화를 통해 코드 가독성 향상
(3) 특징
- 입력매개변수가 꼭 두 개가 아니어도 된다. 여러개가 있어도 되지만 갯수가 많을때는 array나 class로 쓴다.
- 메서드 정의시 소괄호(( ))와 중괄호({ }) 포함
리턴(반환) 타입 - 메서드 완료 후 반환되는 타입 - 반환값이 있는 경우
(=리턴타입이 void가 아닌 경우) 메서드 내 return이 존재해야 함
- 반환값이 없는 메서드는
리턴타입을 void로 선언
메서드 이름 - 변수의 이름 규칙과 동일하게 적용
입력매개변수 - 메서드에 전달되는 값
(4) 메서드의 예시
/* 클래스의 외부에서 메소드 호출 */
//#1. 클래스 정의
class A {
// 메서드
//@1. 리턴 타입: void + 매개변수: 없음.
void print() {
System.out.println("안녕");
}
//@2. 리턴 타입: int + 매개변수: 없음.
int data() {
return 3;
}
//@3. 리턴 타입: double + 매개변수: 2개
double sum(int a, double b) {
return a + b; // return 입력하지 않으면 오류 발생
}
//@4. 리턴 타입: void + 내부에 리턴 포함(함수를 종료한다는 의미)
void printMonth(int m) {
if(m < 0 || m > 12) {
System.out.println("잘못된 입력");
return; //return 없을 경우 = 잘못된 입력/n 15월 입니다. 이렇게 뒷문장도 나온다.
}
System.out.println(m + "월입니다.");
}
}
public class ExternalCallMethods {
public static void main(String[] args) {
//#2. 객체 생성 : 중요
A a = new A();
//#3. 메서드 호출(멤버 활용)
a.print(); // 안녕
int k = a.data();
System.out.println(k); // 3
a.data(); // return 타입을 활용하지 않을 때 쓸 수도 있지만, 결과에는 영향 X 꼭 써야되는 건 아니다.
double result = a.sum(3, 5.2);
System.out.println(result); //3 + 5.2 = 8.2
a.printMonth(5); //5월 입니다.
a.printMonth(15); //잘못된 입력
}
}
(5) 클래스 내부에서의 메서드 호출
import java.util.Arrays;
/* 클래스 내부에서의 메서드 호출 */
public class InternalCallMethods {
//메서드
public static void main(String[] args) {
// 같은 클래스 안에 있는 내부 메서드 호출
print(); //안녕
int a = twice(3);
System.out.println(a); //a = 6
double b = sum(a, 5.8);
System.out.println(b); //11.8
//배열을 매개변수로 가지는 메서드 호출
int[] array1 = new int[] {1,2,3}; //100번지
modifyData(array1);
printArray(array1); //{4, 5, 6}
// printArray(new int[] {1,2,3}); //정상
// printArray({1,2,3}); //비정상
-
}
public static void modifyData(int[] array2) {
//int[] array2;
//array2 = array1 //100번지
array2[0]=4;
array2[1]=5;
array2[2]=6;
}
public static void printArray(int[] array2) {
//int[] array2;
//array2 = {1, 2, 3} // 어떤 타입의 묶음인지 모르니까 안된다.
System.out.println(Arrays.toString(array2));
}
public static void print() {
System.out.println("안녕");
}
public static int twice(int k) {
//int k;
//k = 3;
return k * 2;
}
public static double sum(int m, double n) { // (int a, double n) return a + n 로 해도 상관없다.
//int m; double n;
// m = a
// n = 5.8
return m + n;
}
}
array2 = array1 는 똑같이 100번지를 가리키고 있다.
때문에 array1를 {1,2,3}으로 입력해도, array2 가 {4,5,6}이기 때문에 {4,5,6}으로 출력된다.
728x90
반응형
'코딩 공부 > JAVA' 카테고리의 다른 글
[JAVA] 자바 변수(variable), 상수, 리터럴에 대하여 (0) | 2022.04.28 |
---|---|
[JAVA] 자바 참조자료형에 대해(배열(1차,2차), String)-자바 완전 정복 5 (0) | 2022.04.25 |