JAVA
day05) 함수(메서드)
code_learner
2021. 12. 27. 22:16
- 함수(메서드)란?
여러 명령들의 나열된 묶음, 입력 값을 받아서 내부에서 처리 후 결과를 출력 또는 반환하는 역할.
함수는 여러 명령들을 하나의 이름으로 호출 함으로써, 한번에 명령을 내리고자 하기 위해 사용한다
(코드의 재사용성 증가)
- 함수의 3요소★
- input-인자, 인수, 입력값, 매개변수, 파라미터, args
- output-리턴값, return, 반화값, 출력값, 결과값
- 기능
public static void hello(){//input x output x
System.out.println("안녕하세요! :D");
}
public static void printI(int num) {//input o, output x
num=100;
System.out.println("num= "+num);//결과: 100
}
public static void main(String[] args) {//ctrl+f11: main을 돌리겠다.
//함수는 [호출] 되어야만 동작함!!
hello();
hello();//코드가 "재사용" 됨!!
hello();
int num = 123;//주소를 배정하여 123값을 저장
printI(num);//함수에 123이라는 값을 인자로 보냄(주소를 보내는 것이 아님)
System.out.println("num="+num);
//결과: 123
//함수끼리의 변수는 다른 공간을 사용한다
//배열은 다름
}
- 오버로딩: 함수(메서드) 중복정의
일반적으로 함수의 이름은 다르나, 기능이 같거나 매우 유사 할시 함수명이 서로 달라 헷갈리는 경우가 생긴다. 따라서 JAVA는 함수명의 중복정의를 허용한다.
- 메서드 시그니처: input의 개수, output의 자료형, 기능
- 오버로딩은 매개변수의 개수와 타입은 다르지만 이름이 같은 함수를 여러개 정의하는 것.
public static void func(int num1, int num2) {
if(num1!=num2) {
int max=num1>num2?num1:num2;
System.out.println(max);
}else if(num1==num2) {
System.out.println("두 정수는 같습니다");
}
}
public static void func(double num1, double num2) {
//인자의 자료형이 다름
if(num1!=num2) {
double max=num1>num2?num1:num2;
System.out.println(max);
}else if(num1==num2) {
System.out.println("두 정수는 같습니다");
}
}
public static void func(int num1, int num2, int num3) {
//인자의 개수가 다름
if(num1>num2) {
if(num1>num3) {
System.out.println(num1);
}else {
System.out.println(num3);
}
}else{
if(num2>num3) {
System.out.println(num2);
}else {
System.out.println(num3);
}
}
}
public static void main(String[] args) {
func(1.3, 4.123);
func(1,4);
func(1,2,3);
//4.123
//4
//3
}
- 반환타입과 return값
return값: 함수에 구현된 모든 명령 실행 후, 함수가 갖게 될 결과 값-> 값을 반환하기 위해 사용한다.
-return값은 함수를 즉시 종료해 주기 위해서도 사용된다.
return type(반환타입): 반환하는 값의 자료형, return값이 없으면 retunr type은 void이다.
public static void func(int n) {//1
if(n<1) {
System.out.println("사용불가능!함수를 즉시종료");
return;//함수를 즉시 종료해주는 역할
}
int sum=0;
for(int i=1;i<=n;i++) {
sum+=i;
}
System.out.println(sum);
}
public static void func(int n1,int n2) {//2
if(n1>n2) {
int tmp=n1;
n1=n2;
n2=tmp;
}
int sum=0;
for(int i=n1;i<=n2;i++) {
sum+=i;
}
System.out.println(sum);
}
public static void main(String[] args) {
//메서드 오버로딩
func(100);//1번 메서드: 5050
func(10,12);//2번 메서드: 33
}