본문 바로가기

Java/강의

인수 전달 기법


// 인수전달 방법을 보여주는 프로그램

public class ParameterClass
{
  private static void squareNumber(int oneF, Value twoF, Value threeF)
  { // static을 붙여야만 생성된다.
    System.out.println();
    System.out.println("Begining of squareNumber ");
    System.out.println("oneF : " + oneF);        // 8
    System.out.println("twoF : " + twoF.number);    // 9 
    System.out.println("threeF : " + threeF.number);  // 10

    oneF = oneF * oneF;
    twoF.number = twoF.number * twoF.number;
    threeF = new Value(25);

    System.out.println();
    System.out.println("End of squareNumber ");      
    System.out.println("oneF : " + oneF);        // 64
    System.out.println("twoF : " + twoF.number);    // 81
    System.out.println("threeF : " + threeF.number);  // 25
    }

  public static void main(String[] args)
  {
    int oneA = 8;
    Value twoA = new Value(9);
    Value threeA = new Value(10);

    System.out.println();
    System.out.println("Before call squareNumber ");  
    System.out.println("oneA : " + oneA);        // 8
    System.out.println("twoA : " + twoA.number);    // 9
    System.out.println("threeA : " + threeA.number);  // 10

    squareNumber(oneA, twoA, threeA);

    System.out.println();
    System.out.println("After call squareNumber ");
    System.out.println("oneA : " + oneA);        // 8
    System.out.println("twoA : " + twoA.number);    // 81
    System.out.println("threeA : " + threeA.number);  // 10

    return;
  }
}

class Value
{
  int number;  // 객체가 사라지지않는한 값은 남아있다.

  public Value(int num)
  {
    number = num;
  }
}
▶ squareNumber() 메소드의 형식인수 oneF는 기본자료형인 int형 (값전달방식)
twoF와 threeF는 Value 클래스의 객체 (참조전달방식)
int oneA = 8; int twoA = new Value (9); int threeA = new Value (10);
▶ squareNumber (oneA, twoA, threeA); 메소드를 호출한 직후의 상태 
oneF = oneF * oneF;
twoF.number = twoF.number * twoF.number;  
threeF = new Value (25);
squareNumber() 메소드의 실행이 끝나고, main() 메소드로 돌아왔을 때의 실인수  

'Java > 강의' 카테고리의 다른 글

여러 종류의 객체  (0) 2011.02.11
인스턴스 변수와 정적 변수(Static Variables)  (0) 2011.02.10
생성자(Class Constructors)  (0) 2011.02.08
정수 데이타의 입출력!!  (0) 2011.02.07
키보드 입력받기!! (C의 scanf)  (0) 2011.02.07