Program/Java Programming
메소드에 인수 전달
Hue Kim
2012. 10. 1. 05:22
1. 값에 의한 전달 (pass by value)
class PassByValue { public static void increment(int j) { // main의 j값 increment의 형식매개변수 j에 복사된다. 그림에서 보듯이 이름이 같은것은 아무런 의미가 없고 두개의 // j는 독립된 별도의 공간을 차지한다. j++; System.out.println("Value of j int the increment =" + j); } /** * @param args */ public static void main(String[] args) { int j = 5; // main j의 값이 5로 설정된다. System.out.println("Value of j before the call = " + j); increment(j); // j를 실매개변수로 하여 icrement를 호출한다. System.out.println("Value of j after the call =" + j); // TODO Auto-generated method stub } }
Value of j before the call = 5
Value of j int the increment =6
Value of j after the call =5
2. 참조에 의한 전달(pass by reference)
class PassByReference { int OnetoZero(int arg[]) { // arr이 객체이므로 참조에 의한 전달이 되고 OnetoZero도 동일한 객체 arr을 가리킨다. int count = 0; for (int i = 0; i < arg.length; i++) { // 배열 원소를 순선대로 찾아 1이있으면 count에 1을 증가 시키고 원소의 1을 0으로 변환. if (arg[i] == 1) { count++; arg[i] = 0; } } return count; // count와 제어를 main에 반환 } public static void main(String[] args) { // main 시작 int arr[] = { 1, 3, 4, 5, 1, 1, 7 }; // int 배열을 생성하고 원소의 초기값을 설정한다. PassByReference test = new PassByReference(); int numOnes; System.out.print("Value of the array : ["); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println("]"); numOnes = test.OnetoZero(arr); // OnetoZero를 배개변수 arr로 호출 System.out.println("Number of Ones =" + numOnes); System.out.print("New values of the array:[ "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println("]"); } }
Value of the array : [1 3 4 5 1 1 7 ]
Number of Ones =3
New values of the array:[ 0 3 4 5 0 0 7 ]