Java 매개 변수 전달 방식

1880 단어 자바
사실 이 문 제 는 제 가 원래 번역(자바 신화의 2:매개 변 수 는 주소 입 니 다.),다른 사람의 상세 한 해석(Java 응용 프로그램의 값 에 따라 의 미 를 전달 합 니 다.)과 전문 적 인 해석(자바 응용 프로그램의 값 에 따라 의 미 를 전달 하 는 이해)을 한 적 이 있 습 니 다.그러나 지금 보면 원래 번역 이나 해석 의 측면 에 문제 가 있 습 니 다.밑바닥 의 측면 에서 해석 하 는 것 이 직관 적 이지 않 고 교류 할 때 오 해 를 일 으 키 기 쉬 우 며 결국은 의견 일 치 를 이 루 지 못 합 니 다.다음은 최종 효과 로 매개 변수의 전달 방식 을 설명 한다.
1.원시 데이터 형식,즉 int,long,char 와 같은 유형 은 전송 값 입 니 다.만약 에 방법 에서 값 을 수정 하면 방법 호출 이 끝 난 후에 그 변수의 값 은 변 하지 않 습 니 다.2.대상 유형,즉 Object 의 하위 클래스 입 니 다.만약 에 방법 에서 구성원 의 값 을 수정 하면 그 수정 은 유효 합 니 다.방법 호출 이 끝 난 후에 그 구성원 은 새로운 값 입 니 다.그러나 다른 대상 을 가리 키 면 방법 호출 이 끝 난 후에 원래 의 인용 은 새로운 대상 을 가리 키 지 않 습 니 다.
public class Tester {
    public static void main(String[] args) {
        int primitive = 2;
        changePrimitive(primitive);
        //primitive     2
        MyClass myClass = new MyClass();
        changeObject(myClass);
        //myClass        changeObject       
        //  myClass.i  3 
    }

    public static void changePrimitive(int primitive) {
        primitive = 3;
    }

    public static void changeObject(MyClass myClass) {
        myClass.i = 3;
        myClass = new MyClass();
    }
}

class MyClass {
    int i;
}

 
 
 
원 격 호출 에 대해 서 는 어떤 유형 이 든 호출 이 끝 난 후에 들 어 오 는 매개 변 수 는 이전 과 아무런 변화 가 없 었 습 니 다(물론 전 도 는 원 격 방법 을 직접 호출 하 는 것 입 니 다.중간 에 다른 Proxy 류 나 Facade 류 를 거치 면 대상 이 수정 되 지 않 았 다 는 것 을 보장 할 수 없습니다).Local 인 터 페 이 스 를 통 해 호출 된 것 도 로 컬 호출 에 속 해 야 하 며 위 에서 말 한 상황 과 일치 해 야 한다.

좋은 웹페이지 즐겨찾기