함수란 관련있는 기능(작업)들을 묶고
필요할떄마다 불러내서 사용하는 것을 말합니다.
예시)
public static void printMyThink() {
System.out.println("덥다");
System.out.println("배부르다");
System.out.println("졸리다");}
public static void printMyThink()
위와 같이 함수는
public static 리턴타입 함수명(파라미터) {
return}
으로 구성됩니다.
여기서 리턴타입은 반환될 값의 자료형을 지정합니다.
이것은 main으로 반환할 결과값에 대한 자료형입니다.
함수 내에서는 식이 완성이 되고,
return이라는 것을 사용해서 반환을 합니다.
함수명은 말 그대로 함수의 이름을 지정해주는 것입니다.
이때 주의할 점이 있는데
1. 함수명은 숫자로 시작하면 안됨
2. 특수문자, 띄어쓰기를 사용하면 안됨
3. 자바문법(예약어) 사용시 에러가 발생함
4. 소문자로 시작
5. 다른 사람이 봤을 때 무슨 기능인지 알 수 있게 지어야함
5. 가독성을 위해서
띄어쓰기는
뱀체 : abcd_eft_hi (언더바 사용)
낙타체 : abcdEfgh(대문자 사용)
로 대체함
6. 한글을 사용하지 말 것
7. 동사형으로 정의
다음 주의점들을 모두 충족시켜야합니다.
다음으로
파라미터(인자, parameter)는
함수를 실행하는데 필요한 재료이며
필요한 만큼 사용하되, 정해진 자료형에 맞게 사용해야 합니다.
함수를 만들면
자바를 실행시 JVM이 main을 자동으로 호출하기 떄문에
main에서 해당 함수를 사용해줘야 합니다.
public static void main(String[] args) {
printMyThink();}
다음은 파라미터 두 개를 입력 받아서 사칙연산 결과를
반환하는 함수를 만들어보겠습니다.
public static void calculate(int a, int b) {
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);}
파라미터에서 자료형에 맞는 인자를 선언해주고
함수내에서 해당 파라미터를 사용하면 됩니다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
printMyThink();
calculate(3, 4);}
해당 함수는 파라미터가 필요하기 떄문에
calculate(3, 4);
해당 함수를 호출하려면
2개의 정수인 값을 입력해야합니다.
이번엔 이런 함수를 호출하면 어떤 값이 출력될까요?
public class FMain2 {
public static void test(int b) {
int a = 123;
System.out.println(b); // ?
System.out.println(a+b); //?}
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
test(c);}}
주석 처리된 ?에 들어갈 값은 각각 30과 153일 것입니다.
왜냐하면 test함수에서 선언된 파라미터 b는
결국 파라미터 이름일 뿐이고
test(c)에서 c의 30인 값이
파라미터로 넘어와서 스택에 쌓이게 되기 떄문에
스택에 쌓인 후 다음 함수 코드들이 실행되게 됩니다.
따라서 함수 내에 b 값은 30이 됩니다.
public static void main(String[] args) {
int a = 10; => 지역변수
int b = 20;
int c = 30;
test(c);}}
함수 내에서 만든 변수는 지역 변수(local variable)이라고 하는데
지역 변수는 그 함수 안에서만 사용 가능합니다.
지역 변수는 그 함수 안에서 같은 이름의 다른 변수를 만들 수는 없습니다.
하지만 다른 함수에서는 이름이 중복되어도 상관 없습니다.
이번 시간에는 함수의 기본 개념에 대해서 배웠습니다.
파라미터의 자료형과
지역변수의 값에 혼동되지 않게
주의해야 할 것 같습니다.
감사합니다!
'Java > 이론' 카테고리의 다른 글
[Java] 오버로딩 (Overloading) (0) | 2024.11.22 |
---|---|
[Java] 함수의 return (0) | 2024.11.22 |
[Java] Random 기능 (0) | 2024.11.22 |
[Java] 삼항 연산자 (6) | 2024.11.22 |
[Java] Shift 연산자 (0) | 2024.11.22 |