Table of Contents
목차
함수
의의: 입력한 데이터를 받아 일련의 과정을 거쳐 결과를 반환하는 과정
사용자 정의 함수
Main함수 뿐 아니라 사용자가 직접 정의하여 함수를 구성
함수 이름: 변수와 마찬가지로 임의로 정할 수 있음
내부 연산: 함수의 구성 목적에 맞는 코딩을 직접 작성
각 괄호 안에 있는 것: 함수 본문, 함수 결과 반환
쓰는 이유
1) 반복적인 프로그래밍을 피할 수 있다.
-> 자주 사용되는 구문을 함수로 묶어 호출만 하면 되도록 프로그래밍한다.
2) 코드의 가독성이 높아진다.
-> 함수 이름을 명확하게 만들고 그 안에 코딩을 할 경우 프로그래밍의 가독성이 대폭 높아진다.
3) 유지 보수가 편하다.
-> 자주 사용되는 구문이 문제가 있을 경우 함수 내 한번만 수정하면 된다
return의 쓰임새
1) 함수에서 결과 값을 함수를 호출했던 코드로 돌려보내는 역할
2) 함수를 종료하는 역할 (return 구문을 만나면 그 즉시 함수를 종료할 수 있다)
함수 내에서 입력 변수의 값 변경
[PROBLEM]
[Q] a,b의 값이 변경이 될까?
public static void main(String[] args) {
int a = 1;
int b = 2;
swap(a,b);
System.out.println(a + “,” + b);
}
public static void swap(int a, int b)
{
int tmp = a;
a = b;
b = tmp;
}
[A] return 값이 없어서 swap 적용 X
(그럼 a,b값을 return해볼까?) 자바는 return 하나 밖에 안됌ㅠㅠ
[SOLUTION]
주소값 전달
공용공간을 던지자
public static void main(String[] args) {
int a = 1,b = 2;
int [] c = {a,b};
swap(c);
System.out.println(c[0] + "," + c[1]);
}
public static void swap(int []a)
{
int tmp = a[0];
a[0] = a[1];
a[1] = tmp;
}
주소값 반환
공용공간을 함수에서 만들자
public static void main(String[] args) {
int a = 1; int b = 2;
int [] swapped = swap(a,b);
System.out.println(swapped[0] + ", " + swapped[1]);
}
public static int[] swap(int a, int b)
{
int [] c = {a,b};
int temp = c[0];
c[0] = c[1];
c[1] = temp;
return c;
}
지역변수 사용 범위
-
지역변수: 함수 안에서 정의된 함수
지역변수는 그 함수 안에서만 사용 된다 -
전역변수: 함수 밖 전체에서 정의 된 함수
// 전역 변수
int a = 0 ;
public static void swap()
{
// 지역변수
int a = o ;
}
[Q]
- 만약에 다음과 같이 i를 재활용하면?
```java
for(int i = 10;i>=1;i–) { System.out.println(i); }
System.out.println(i); ```
(A)
에러가 난다(지역변수는 그 안에서만 할당)