메소드 형식
메소드
- 클래스의 멤버 함수
- 접근 지정자 선언을 제외하면 C/C++의 함수 작성법과 동일

- 접근 지정자: 메소드가 다른 클래스에서 호출될 수 있는지 지정(public, prvate, protected, default)
- 리턴 타입: 메소드가 반환하는 값의 데이터 타입
인자 전달
자바의 인자 전달 방식
- 기본 타입의 값 전달
- 객체 또는 배열 전달
1. 기본 타입의 값이 전달되는 경우
- 메소드 매개변수가 기본 타입(byte, char, short, int, long, float, double, boolean)으로 선언된 경우
- 호출자(caller)가 전달하는 값이 매개변수에 복사되어 전달
- 실인자 값은 변경되지 않음
public class ValuePassing{
static void increase(int m){ //m=10으로 초기화
m = m+1; //m=11
}
public static void main(String args[]){
int n = 10;
increase(n);
System.out.println(n);
//n의 값이 m으로 복사되어 전달
//m값은 11이 되고 n값은 여전히 10
}
}
- main()에서 변수 n에 저장된 값 10을 increase() 메소드에 전달
- increase(int m)메소드가 호출되면 매개변수 m이 생성되고 10으로 초기화, m 값을 1 증가시킴
- increase()에서 리턴하여 main() 메소드로 돌아오면 변수 n 값은 여전히 10

2. 객체가 전달되는 경우
- 메소드의 매개변수가 클래스 타입인 경우
- 객체가 아니라 객체의 레퍼런스 값이 전달
- 매개변수가 실인자 객체 공유
public class ReferencePassing{
static void increase(Circle m){ //pizza의 레퍼런스가 m에 복사
m.radius++; //m=11, increase()가 종료된 후에도 m=11
}
public static void main(String args[]){
Circle pizza = new Circle(10);
increase(pizza);
System.out.println(pizza.radius);
}
}
- increase(pizza)에 의해 increase(Circle m)가 호출되면 매개변수 m 생성
- pizza 변수에 저장된 값(레퍼런스)이 m에 복사
- m은 pizza가 가리키는 객체를 함께 가리키게 됨

3. 배열이 전달되는 경우
- 객체 전달과 동일
- 배열에 대한 레퍼런스만 전달
- 매개변수가 실인자의 배열을 공유
public class ArrayPassing{
static void increase(int[] array){
for(int i=0; i<array.length; i++){
array[i]++;
}
}
public static void main(String args[]){
int a[] = {1, 2, 3, 4, 5};
increase(a);
for(int i=0; i<a.length; i++){
System.out.print(a[i]+" ");
}
}
}
- main()에서 생성된 배열 a가 increase()에 전달
- increase(int[] array)의 매개변수 array는 정수형 배열에 대한 레퍼런스로서 배열 a를 가리킴
- 두 레퍼런스가 하나의 배열을 공유
- main()에서 배열 a를 출력하면 변경된 값(2 3 4 5 6)이 출력

예제 4-8 char[] 배열을 전달받아 출력하는 pringCharArray() 메소드와 배열 속의 공백(' ') 문자를 대치하는 replaceSpace()메소드 작성
- char c[] = {'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 'p', 'e', 'n', 'c', 'i', 'l', '.'}
'안 씀 > java-개념' 카테고리의 다른 글
객체 소멸과 가비지 컬렉션 (0) | 2024.05.20 |
---|---|
메소드 활용 - 메소드 오버로딩 (0) | 2024.05.20 |
객체 배열 (0) | 2024.05.20 |
this 레퍼런스, 객체 치환 (0) | 2024.05.14 |
생성자 (0) | 2024.05.14 |