책 내용 질문하기
1권 예제2 3번 추가설명
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
104
조회수
191
작성일
2020-09-03
작성자
탈퇴*원
첨부파일
myVal에 할당하지 않고 'change(myVal)와 같이 입력해도 결과는 같다. 이 문장이 이해가 안 가는데 설명 부탁드립니다.
답변
2020-09-04 20:58:41

안녕하세요 길벗수험서 운영팀입니다.

 

클래스 구조를 가진 인스턴스 변수인 myVal은 포인터 변수를 인수로 보낸것과 동일하게 메소드에서 변경된 값을 리턴하지 않아도 main()까지 변경된 값이 유지됩니다.

 

때문에 change 메소드에서 굳이 return문을 쓰지 않고, 그리고 메인 메소드에서 호출 시 리턴값을 받는 'myVal ='없이 다음과 같이 코드를 바꿔도 된다는 의미입니다.

 

public static void main(String[ ] args) {

  AAclass myVal = new AAclass( );

  myVal.i = 10;

  myVal.j = 20;

  change(myVal);

  System.out.printf("i=%d, j=%d\n", myVal.i, myVal.j);

}

static void change(AAclass myVal) { 

  int temp;

  temp = myVal.i; 

  myVal.i = myVal.j; 

  myVal.j = temp; 

}

 

행복한 하루되세요 :)

  • 관리자
    2020-09-04 20:58:41

    안녕하세요 길벗수험서 운영팀입니다.

     

    클래스 구조를 가진 인스턴스 변수인 myVal은 포인터 변수를 인수로 보낸것과 동일하게 메소드에서 변경된 값을 리턴하지 않아도 main()까지 변경된 값이 유지됩니다.

     

    때문에 change 메소드에서 굳이 return문을 쓰지 않고, 그리고 메인 메소드에서 호출 시 리턴값을 받는 'myVal ='없이 다음과 같이 코드를 바꿔도 된다는 의미입니다.

     

    public static void main(String[ ] args) {

      AAclass myVal = new AAclass( );

      myVal.i = 10;

      myVal.j = 20;

      change(myVal);

      System.out.printf("i=%d, j=%d\n", myVal.i, myVal.j);

    }

    static void change(AAclass myVal) { 

      int temp;

      temp = myVal.i; 

      myVal.i = myVal.j; 

      myVal.j = temp; 

    }

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.