728x90
메써드 호출 방식
메써드 호출은 함수 호출과 같이 메써드_명( )를 사용하면 메써드의 내용이 실행된다.
여기서는 call by value(값에 의한 호출)이라는 '깊은 복사' 방식은 값을 복사해서 그 값을 사용하는 방식이고,
call by reference(주소에 의한 호출)는 얇은 복사방식은 메모리 주소를 참조해서 거기에 들어 있는 값을 꺼내서 사용하는 방식.
예제 1)
package Java07;
public class Test04 {
void hello() {
System.out.println("안녕?");
}
static void hell() { //static은 정적이라는 의미로 고정되어 있다는 의미
System.out.println("Hello?");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test04 ex = new Test04(); // 클래스에서 객체 생성 후 사용
ex.hello();
hell();
/* static 이 붙은 클래스에서는 객체를 생성하지 않아도 hell(); 식으로 메써드를 호출할 수 있다.
static 이 붙으면 프로그램 실행 시 자동으로 메모리에 올라가서 실행되기 때문이다. */
for (int i=1; i<=10; i++) {
ex.hello();
hell();
}
}
}
예제 2)
package Java07;
class A {
void a(int x) {
System.out.println("인수는 " + x);
}
}
public class Test06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
A x = new A();
x.a(5);
}
}
예제 3)
package Java07;
public class Test09 { // Call by reference
static void test1(int [] n) {
System.out.println(n); //배열의 시작주소
for(int i=0; i<n.length; i++) {
System.out.println(n[i]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num = {10,20,30,40,50};
System.out.println(num); //배열의 시작주소
test1(num); //Call by reference
// test1(num[0],num[1],num[2],num[3],num[4]); 하면 Call by value
}
}
반환 값
반환값은 return으로 표시하는데 현재 실행중인 메써드는 실행한 뒤 메써드를 호출한 곳으로 프로세스가 되돌아간다.
이 때 함수 실행으로 리턴 값이 없으면 return을 생략할 수 있고,
return 값이 있으면 뒤에 값을 지정하는데 리턴값은 하나만 있을 수 있다.
메써드에서 선언된 리턴 타입과 return 되는 자료형은 반드시 같아야 한다.
예제 1)
package Java07;
class Calcc {
int opera(int a, int b) {
return a-b;
}
}
public class Test07 {
static void disp() {
int o;
Calcc cal = new Calcc();
o = cal.opera(9, 10);
System.out.println(o);
}
public static void main(String[] args) {
disp();
}
}
예제 2)
package Java07;
import java.util.*;
public class Test08 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = -1;
System.out.println("a의 값 : " + a);
System.out.println("a의 절대값 : " + abs(a));
System.out.println("a의 절대값 : " + Math.abs(a));
}
private static int abs(int num) {
// TODO Auto-generated method stub
return num>=0 ? num : -num;
}
}
==> 보통은 함수를 처리할 때 변수와 함수 선언은 main( ) 메써드 앞에서 먼저 하고 함수 몸체도 먼저 기술해 주는 것이 좋다.
하지만 함수 몸체는 main( )메써드 다음으로 넘겨도 된다.
'일단 해보는 코딩 > Java' 카테고리의 다른 글
[Java] 제네릭(Generic) 사용법 (0) | 2022.07.28 |
---|---|
[Java] 접근제한자, 상속, 오버라이딩 예제 모음 (0) | 2022.07.27 |
[Java] Break/Continue 문 (0) | 2022.07.25 |
[Java] 자바 난수(random) 함수 및 seed 설명 (0) | 2022.07.22 |
[Java] 배열(Array) (0) | 2022.07.21 |