
함수
함수란 하나의 기능을 실행하는 코드의 단위이다.
이때까지 eclipse를 통해 자바를 실행할때, 자바 컴파일러는 자바 코드의 main함수를 읽어내서 실행한다.
public class Java {
public static void main(String[] args) {
}
}
main함수는 없으면 코드가 실행이 될 수 없을만큼 중요한 함수이다.
그리고 이 함수에 덧붙여서 활용할 수 있는 함수를 우리가 직접 만들 수도 있다. 이렇게 다른 세부적인 기능을 또 다른 함수로 만들어주는 이유는 코드를 조금이라도 더 간결하고 효율적이고 가독성있게 만들기 위함이다.
// 접근제한자 지정예약어 반환형 함수명(매개변수...) {}
public static void sub {}
sub라는 이름의 함수를 만들어주는 가장 기본 형태다.
그리고 이제껏 배우고 연습했던 제어문, 반복문 등, 모든 명령어를 main함수에서 실행한 것처럼 똑같이 적어줄 수 있다.
public class Exam25 {
public static void main(String[] args) {
System.out.println("나는 Main 함수입니다");
deposit();
withdraw();
for(int i=0; i<5; i++) {
friday();
}
}
public static void deposit() {
System.out.println("나는 은행 입금 기능입니다.");
}
public static void withdraw() {
System.out.println("나는 은행 출금 기능입니다.");
}
public static void friday() {
System.out.println("오늘은 금요일입니다!!!");
}
}
함수를 만들고 제어할때, 가장 중요한건 흐름을 파악하는 것이다.
어떤 변수가 어디에서 어떻게 선언되고, 어디에 있는 명령어를 통해 처리되는지 알고 있어야한다.
함수: Call by Name
함수의 이름으로 불러와서 실행시키는 방법이다. 위 예시의 deposit(), withdraw(), friday() 함수를 말한다.
함수: Call by Value
함수에 값을 넣은 채로 실행시켜서 넣어준 변수값을 처리해줄 수 있는 함수를 말한다.
public class CallbyValue {
public static void main(String[] args) {
int a=10;
float b=22.5f;
char c='A';
String str="apple";
fun(a, b, c, str); // Call By Value: 블럭 너머로 값을 넘겨주는 방법
}
public static void fun(int a, float b, char c, String str) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(str);
}
}
블럭 너머로 값을 넘겨주는 방법이다. fun()함수를 통해서 특정한 자료형의 값을 받아와서 처리를 하는 방식이다.
이때 자료형은 무조건 정해진 값으로 넘겨줘야하며, 값 자체를 넘겨줘도 되고 선언한 변수명을 통해 넘겨줘도 된다.
함수: Call by Value~return
public class CallbyValue_return {
public static void main(String[] args) {
sub();
fun(10, 20);
String str=apple();
System.out.println(str);
int su=10;
int value=20;
int hap=sum(su, value);
System.out.println("sum: " + hap);
}
public static int sum(int su, int value) {
int hap=su+value;
return hap;
}
public static void sub() {
System.out.println("sub Fun");
}
public static void fun(int a, int b) {
System.out.println(a + "\t" + b);
}
public static String apple() {
String str="곧 점심시간입니다~";
System.out.println(str);
return str;
}
}
Call by Value~return에서 가장 큰 변화는 반환형 void가 아니란 점이다.
void가 들어가는 자리에 반환(return)해줄 값의 자료형을 넣어주면 그 함수는 실행만 하는거에서 끝나지 않고 해당 자료형의 변수를 반환해준다.
예시에서 sum()과 apple()함수는 각각 int와 String 형태의 값을 반환해주기 때문에, sum()은 hap이라는 정수를 정의하는데에 쓰이고, apple()은 str이라는 문자열을 정의하는데 쓰였다.
반환형에는 배열도 포함된다.
'Java' 카테고리의 다른 글
| 10.24.(월) Java-10: 클래스(2) (0) | 2022.10.26 |
|---|---|
| 10.21.(금) Java-09: 클래스(1) (0) | 2022.10.22 |
| 10.20.(목) Java-07: 배열 (0) | 2022.10.21 |
| 10.20.(목) Java-06: 제어문(반복문) (0) | 2022.10.20 |
| 10.19.(수) Java-05: 제어문(조건문) (0) | 2022.10.19 |