메서드란?
클래스 안에 존재하며, 코드들의 집합.
즉 함수라고 생각하면 됨.
다른 언어에는 함수와 메서드가 구분되나, 자바에서는 클래스 밖에 존재하는 것이 없으므로 구분하지 않음
매개변수와 인수
명칭 확실히 구분할 것!
매개변수 : 메서드에 넣을 입력값을 저장하는 변수 (int a, int b)
인 수 : 메서드를 호출할 때 넣는 입력값 (3, 4)
메서드의 구조
리턴자료형 메서드명(입력자료형1 매개변수1, 입력자료형2 매개변수2, ...) {
수행할 코드 1;
수행할 코드 2;
....
return 리턴값;
}
1) 입력값 O, 리턴값 O : 메서드 만들 때 리턴자료형 넣어줌, 마지막에 return 코드 사용
int sum(int a, int b) {
return a+b;
}
2) 입력값 X, 리턴값 O : 입력값에 빈칸, return코드 및 리턴자료형 사용
String say() {
return "Hi";
}
3) 입력값 O, 리턴값 X : 리턴자료형 void 사용
void sum(int a, int b) {
System.out.println("a와 b의 합은 "+(a+b)+"입니다.");
}
4) 입력값 X, 리턴값 X
void say() {
System.out.println("Bye");
}
※ void 인 메서드(=리턴값이 없는 메서드)에서는 중간에 return; 사용 시 마치 break;처럼 해당 메서드를 빠져나옴
public class Day13 {
/* 5-3 메서드 더 알아보기
구조 :
리턴자료형 메서드명(입력자료형1 매개변수1, 입력자료형2, 매개변수2, ...) {
...
return값; */
int a;
void varTest(Day13 sample) {
sample.a++;
}
void varTest1() {
this.a++; // 굳이 입력값으로 객체를 안 받고 this를 활용할 수도 있음
}
// 입력값O 리턴값O 메서드
int sum(int a, int b) { //a, b는 매개변수
return a+b;
}
// 입력값X 리턴값O 메서드
String open() {
return "Hi";
}
// 입력값O 리턴값X
void multi(int a, int b) {
System.out.println(a+"과 "+b+"의 곱은 "+ (a*b) + "입니다.");
}
// 입력값X 리턴값X
void close(){
System.out.println("Bye");
}
// return의 또 다른 쓰임 : void메서드에서 return; 만 사용 시 해당 메서드를 즉시 빠져나감
void sayNick(String nick) {
if("바보". equals(nick)) {
return;
}
System.out.println("나의 별명은 "+nick+"입니다.");
}
//리턴값 없이 값만 1 증가했으므로 main 메서드값에 영향 X
void varTest(int d) {
d++;
}
public static void main(String[] args) {
int a = 3;
int b = 4;
Day13 sample = new Day13();
int c = sample.sum(a, b);
System.out.println(c); // 입력값O 리턴값O
System.out.println();
String result = sample.open(); // 입력값X 리턴값O
System.out.println(result);
System.out.println();
sample.multi(a, b); //입력값O 리턴값X
System.out.println();
sample.close(); //입력값X 리턴값X
System.out.println();
sample.sayNick("야호");
sample.sayNick("바보"); // 출력되지 않음
System.out.println();
int d = 1;
sample.varTest(d);
System.out.println(d);
System.out.println();
sample.a = 1; //객체변수에 접근하여 1 값을 대입
sample.varTest(sample); // varTest메서드에 입력값으로 sample객체 넣음 >> sample의 객체변수 a에 1 더해짐
System.out.println(sample.a); // 2 출력
}
}