함수 : 프로그램에서 어느 한 기능을 처리하기 위한 기능을 모은 것으로
필요 할 때 마다 호출해서 사용 하는 기능이다.
근데 자바는 함수가 없음.
왜냐면, 자바는 모든 함수가 클래스 안에 있어서 매서드만 존재한다.
메서드 : 자주 사용 되는 코드를 따로 모은 것
함수와 매서드의 차이 : 메서드는 클래스에 종속 되어 있다.
즉, 메서드는 함수 안에 포함 되어 있어 함수의 기능을 가지지만 클래스에 종속 되어 있다.
파라미터 : 함수가 밖에서 필요한 값을 받아 오는 변수
return 문을 통해서 처리한 값을 반환한다. ex) return res;
1. 함수정의
반환타입 함수명 (파라미터) {
함수에서 실행할 문장들 (블록) ;
}
● 반환타입 : 매서드가 반환하는 값의 타입.
반환 타입에는 원래 변수 선언 할 때 썼던 int , char , String 같은 걸 원하는 타입에 맞춰 작성 한다.
배열도 가능하다 ex) int [ ] a ( int [ ] arr )
void : 아무런 값도 반환 하지 않을 때 반환타입에 써준다.
● 함수명 : 자바 이름 명명 규칙에 맞게 생성.
파라미터 (매개변수) : 외부에서 필요한 값을 받아올 변수를 나열.
● 블록 : 함수가 실행 할 코드
void f1 () { //반환값이 없는 변수명 void 를 이용하여 함수명 f1, 파라미터가 없는 함수 선언
system.out.println ("test") // f1 이 불려져서 오면 test 를 프린트 한다.
} //함수 블록 closed
반환 값 없음 / 함수 이름 f1 / 파라미터 없음 (즉, 외부에서 값을 받아 오지 않는다)
f1 함수를 호출하면 { } 블록 안에 있는 코드들이 실행이 되고 더 이상 실행 할 코드가 없으면 종료 된다.
int add (int a, int b) { // int 변수타입의 함수 이름 add 를 생성. 파라미터는 int a 와 b
return a + b; // 해당 함수를 부른다면 리턴 값은 a + b
} // a+b 한 값을 int 타입으로 받고 메소드 종료
함수 이름 add / 반환 값 int ;
파라미터 두개 : 외부에서 값을 두개 받아 오겠다. 그 두개의 타입이 int 이다. a, b 에 저장해서 사용한다.
꼭 두개가 같은 타입을 불러와야하는 것은 아니다. 두개 다르게 받아와도 됌.
a, b 값을 더한 결과를 반환하고 종료
2. 함수 호출
예시1)
void f1 () {
system.out.println ("test")
}
위와 같은 메서드가 있을 경우, 해당 함수를 호출하기 위해서는
Main에 해당 메서드가 포함 되어 있는 클래스를 생성 한 후 객체명 . 매서드명 () ; 이렇게 호출 해주면 된다.
즉, 위에 예시의 함수의 클래스 이름이 Test 라면, ① class를 객체로 생성시키고 : Test t1 = new Test ② 함수 호출을 해준다 : t1.f1(); 이다. 만약 class에 선언 된 메서드에 파라미터 값이 있다면 해당 파라미터를 포함하여 호출한다.
Main class 에 함수 호출은 점프(분기) 되어 함수가 정의 되어 있는 곳으로 점프 후 함수 블럭을 실행한다.
따라서 sysout("test") 를 수행 하고, 다시 함수를 호출 했던 곳으로 돌아와서 호출 한 값을 실행 한다.
예시2)
int add (int a, int b) {
return a + b;
}
위와 같은 메서드가 클래스에 포함 되어 있다.
Main class 에서 int x = add (4,5) ; 라는 식을 불러 왔다.
함수의 이름은 add 이고 파라미터가 두개인 메서드라는 것을 확인 할 수 있다. 그리고 존재하는 파라미터에 4 , 5 숫자를 넣어준다. 이 넣어주는 값을 을 아규먼트 (인자 값) 라고 한다. main class 에서 해당 메서드로 점프 해서 블록 안의 실행문을 실행 한 후 리턴된 값을 다시 add (4,5) 로 데리고 온다.
즉, 블록의 return a + b = return 4 + 5 (파라미터 값) 임으로 9를 저장 한 후 main class 로 돌아와 int x에 9를 할당 해준다.
함수 호출에 파라미터가 있다면 add (4,5); 이렇게만 불러와서는 안되며, 그 값을 담아줄 빈공간도 필요하다. 그게 int x 이다. sysout (x) ; 이렇게 메서드를 다른 변수에 담아 프린트 하고 싶다면 간단하게 sysout(add(4,5)) 이렇게 호출 해도 된다.
3. 배열함수 호출
int [] f1 () { }
int 타입의 배열을 가지고 있는 f1 함수 () 파라미터는 없다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 - 다양한 변수들 (0) | 2023.02.26 |
---|---|
[JAVA] 객체지향 - 클래스와 객체 (0) | 2023.02.26 |
[JAVA] 자바 머그게임 만들기 (0) | 2023.02.23 |
[JAVA] 자바 정렬 : 삽입 정렬 (insertion sort) (0) | 2023.02.23 |
[JAVA] 자바 정렬 : 버블 정렬 (bubble sort) (0) | 2023.02.23 |