함수와 메서드(Method)는 특정 기능을 구현한 코드의 묶음을 말한다.
메소드 : class에 포함
ex) 아래 addNum 함수, main()
함수 : 소속이 없다.
Java의 경우 calss안에 함수를 적으므로 용어 차이이다.
함수명(매개변수1, 매개변수2..) {
기능;
return; }
: return x는 함수 내의 x값을 함수 밖으로 반환한다.
ex) return result;
: 변수 = 함수명(변수)
-> 변수 : 함수값 저장할 변수(없어도 호출되나, 값을 저장하려면 필요하다.
ex) int a = addNum(1,2);
public : 접근지정자 중 공공제를 의미.
static : 고정된. 한번 만들면 프로그램 끝날때까지 살아있다.
int : addNum()함수가 return해주는 result값의 자료형.
프로그램 실행 시 컴파일러가 읽는 부분은 main이므로 FunctionTest 실행해도 아무것도 일어나지 않는다.
- main 내용 추가.
main() { int a= 3; int b = 5; int sum = addNum(a,b); }
- addNum에 3, 5 대입되어 result변수 만들어진다.
- addNum의 결과 result값이 반환되어 sum에 대입
-> main의 내용부터 순서대로 stack(스택)에 저장된다.
-> 프로그램 종료(코드가 사용되지 않을 때)시 코드들은 자동으로!!! stack에서 없어진다. : JVM이 해준다.( C언어와 차이점)
Method : 객체(클래스)에 필요한 기능을 구현하는 함수.
멤버함수 라고도 한다.
(cf) class안에 변수: 멤버변수
장점: 중복 코드를 제거하여 가독성을 높인다.
매개변수 = 인수 = 인자 = 파라미터
sum의 결과 반환(return)타입 = int
반환값 없음 : void
※ chap3 - method
call by value(값에 의한 호출)
: 똑같은 값을 복사해서 사용한다.
call by reference(참조에 의한 호출)
: 변수가 저장된 주소를 직접 참조해서 사용한다.
-> 장점: 메모리 공간을 많이 차지하지 않는다.
-> 단점: 기존의 변수값(원본)이 변경될 우려가 있다.
ex) value값에 의한 호출
Q-1)
- void
- 오버로딩
if(x%2 == 1){ syso(x)
:본체 = {}
:반환타입이 없는 void 함수이므로 return을 쓰지 못하고 print를 사용.
Q-2)
※ chap3 - programming
(1) 반복문 이용
(2) 반복문 없이 반복 -> 재귀함수 이용
public static int factorial(int n)
int f = 1;
return n * factorial(n-1);
1. 함수 생성 후 함수명으로 호출 접근지정자 static 반환 함수명(인자) 기능 2. 함수내에서 스스로 호출 함수명(원하는 기능식);
- o
- x
- x
: 오버로딩
1. 동일한 이름의 메서드를 선언
2. 메서드 시그니처가 달라야 한다.
ex) 매개변수 개수, 타입
-> 반환 타입이 다른 것은 오버로딩이 아니다.
- return
:호출한 메서드 = main()
호출된 메서드 = factorial()
5(1). int i
: i 자료형 없음
: ; 없다
: 조건식 ->논리오류5(2). int sum = 0, i = 0;
do {} while(조건식);
:sum값은 초기화 안되어있음
while() 뒤에 ; 있어야 한다.
- 25
:1+3+5+7+9
- b = 9
: switch 줄에서 a = 1
case 들어가서 a = 2
case 1 : b = 2+2 = 4 > break없다.
case 2 : b = 4+5 = 9
- o
:(1) b=2 이려면 1<=a<3 이어야 함
- 7
:1+2+4
for문에서 continue 만나면 조건식으로 돌아간다.
- 30
:x = 1, y = 1, t = 1
x = 2m y = 4, t = 5
x = 3, y = 9, t = 14
x = 4, y = 16, t = 30