일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 크롤링 오류
- 함수
- 배열 3요소
- DoitSQL입문
- 생성자
- dbms
- 숫자형식오류
- 우아한테크
- 웹브라우저 수용도
- 예제
- SQL입문
- 페이지분석
- 크롤링
- 키-값 데이터베이스
- DoitSQL
- 데이터베이스
- R1C3
- 예외
- 자바
- DoIt
- Doit입문SQL
- 웹 브라우저 전쟁
- HTML역사
- 자바 오류
- 배열 예제
- 자바 예외
- 숫자 형식
- html
- SQL
- 함수 선언
Archives
- Today
- Total
프로그래밍
[자바 기초] day05 : 함수의 인자 본문
728x90
반응형
2023.05.09.화
함수의 인자
함수를 호출할 때 인자로 배열을 쓰는 경우 참조에 의한 호출이 발생한다
이때 배열 값을 반환하지 않더라도 함수 인자에 배열의 주소 값이 전달되었기 때문에
힙 메모리에 함수가 접근하여 값이 변할 수 있다
이를 '참조에 의한 호출'이라고 한다
call by reference
package class00;
public class Test03 {
public static void func1(int num) {
num+=100;
}
public static int func2(int num) {
return num--;
}
//함수를 호출할때 인자로 배열을 쓰는 경우
//(배열 특성상 주소값이 이동하기 때문에)
//참조에 의한 호출
public static void func3(int[] data) {
for(int i=0;i<data.length;i++) {
data[i]=123;
}
}
public static void main(String[] args) {
int num=10;
int[] data=new int[3];
for(int i=0;i<data.length;i++) {
data[i]=i+1; // [ 1, 2, 3 ]
}
func1(num);
System.out.println("num1= "+num);
num = func2(num);
System.out.println("num2= "+num);
func3(data);
System.out.print("[ ");
for(int v:data) {
System.out.print(v+" ");
// [ ?, ?, ? ]
}
System.out.println("]");
}
}
위의 코드의 실행 결과는 다음과 같다
num1= 10
num2= 10
[ 123 123 123 ]
num1은 반환되지 않아 그대로 10이다
num2는 9로 계산되었지만 반환하고 후위연산자가 실행되기 때문에 10이 반환되어 num2=10이다
data[]는 반환되지 않았지만 참조에 의한 호출로 힙 메모리에 저장된 값이 호출되어 [123 123 123] 이 된다
함수의 오버로딩
자바에서는 함수의 오버로딩을 허용하고 있다
[오버로딩]
기능이 같으면 메서드 시그니처 즉, 인자의 개수, 자료형 등이 달라도 중복 정의를 허용한다
package class00;
public class Test05 {
public static int plus01(int a, int b) {
return a + b;
}
public static int plus02(int a, int b, int c) {
return a + b + c;
}
public static double plus001(double a, double b) {
return a + b;
}
public static double plus002(double a, double b, double c) {
return a + b + c;
}
public static void main(String[] args) {
}
}
위와 같이 함수가 있다면 자료형, 인자 개수에 따라 매번 다른 함수를 써야하기 때문에 함수명을 파악하기 어렵다
위의 코드에선 모든 함수명을 plus()로 바꿔도 정상 작동된다
이는 자바에서 자주 쓰는 print 출력에서도 볼 수 있다
System.out.println();
System.out.print(); //에러
print()만 에러가 나는 이유는 print()에 아무런 값도 넣지 않는 기능이 없기 때문이다
728x90
반응형
'자바 > 자바 기초' 카테고리의 다른 글
[자바 기초] day06 : 객체지향 프로그래밍 (2) | 2023.05.10 |
---|---|
[자바 기초] day05 : 369 게임 프로그램 예제 (0) | 2023.05.09 |
[자바 기초] day05 : 함수 생성 방식 (1) | 2023.05.09 |
[자바 기초] day04 : 함수 (0) | 2023.05.08 |
[자바 기초] day04 : 자판기 프로그램 만들기 (0) | 2023.05.08 |
Comments