대상과 인용된 코드에 대한 실행 결과 분석

1722 단어 대상
보기
클립보드로 복사
프린트
public class MyClass{   
  •     static void aMethod(StringBuffer sf1,StringBuffer sf2{   

  •         sf1.append(sf2);   
  •         sf2 = sf1;   

  •     }   
  •     public static void main(String[] args){   

  •         StringBuffer sf1 = new StringBuffer("A");   
  •         StringBuffer sf2 = new StringBuffer("B");   

  •         aMethod(sf1,sf2);   
  •         System.out.println(sf1+":"+sf2);   

  •     }   
  • }  
  • public class MyClass{
        static void aMethod(StringBuffer sf1,StringBuffer sf2{
            sf1.append(sf2);
            sf2 = sf1;
        }
        public static void main(String[] args){
            StringBuffer sf1 = new StringBuffer("A");
            StringBuffer sf2 = new StringBuffer("B");
            aMethod(sf1,sf2);
            System.out.println(sf1+":"+sf2);
        }
    }

    이 결과가 왜 AB:B야?
    분석:
    1 기본 메서드는 2개의 객체StringBuffer를 참조로 전달합니다.
    2방법에서도 2개의 인용이 매개 변수로 이 2개의 대상을 가리켰다. 그들은 sf1과 sf2이다. 이곳의 sf1과main방법의 sf1은 같은 것이 아니라 서로 다른 작용역을 가진다.
    3 호출 방법, 대상의 내용을 수정했기 때문에 이때 sf1이 가리키는 대상의 내용은 AB이다
    4 방법 중의 sf2를 sf1을 가리키는데 이 조작의 영향은 호출 방법의 인용에 영향을 주고main 방법의 인용에 영향을 주지 않는다
    5 되돌아왔다.main 방법에서 sf1이 가리키는 대상은 이미 AB가 되었고, sf2가 가리키는 대상은 아무런 변화가 없다

    좋은 웹페이지 즐겨찾기