>Java >java지도 시간 >인수가 전달되는 방식

인수가 전달되는 방식

PHPz
PHPz원래의
2024-08-24 06:34:08882검색

인수를 메서드에 전달하는 두 가지 방법:

값별 호출:

  • 서브루틴의 형식 매개변수에 있는 인수 값을 복사합니다.
  • 메소드 내 매개변수에 대한 변경 사항은 원래 인수에 영향을 주지 않습니다.

참조 전화:

  • 값이 아닌 인수에 대한 참조를 전달합니다.
  • 매개변수에 대한 변경 사항은 호출의 원래 인수에 영향을 미칩니다.

기본 유형 통로:

  • 기본 유형(예: int 또는 double)이 전달되면 값별 호출이 사용됩니다.
  • 메서드는 인수의 복사본을 수신하므로 메서드 내에서 변경한 내용은 원래 값에 영향을 주지 않습니다.

예:

class Test {
    void noChange(int i, int j) {
        i = i + j;
        j = -j;
    }
}

class CallByValue {
    public static void main(String[] args) {
        Test ob = new Test();
        int a = 15, b = 20;
        System.out.println("a and b before call: " + a + " " + b);
        ob.noChange(a, b);
        System.out.println("a and b after call: " + a + " " + b);
    }
}

객체 통로:
객체가 메소드에 전달되면 Java는 참조별 호출을 사용합니다.
메소드는 객체에 대한 참조를 수신합니다. 이는 메소드 내에서 변경된 사항이 원래 객체에 영향을 미친다는 것을 의미합니다.

예:

class Test {
    int a, b;
    Test(int i, int j) {
        a = i;
        b = j;
    }
    void change(Test ob) {
        ob.a = ob.a + ob.b;
        ob.b = -ob.b;
    }
}

class PassObRef {
    public static void main(String[] args) {
        Test ob = new Test(15, 20);
        System.out.println("ob.a and ob.b before call: " + ob.a + " " + ob.b);
        ob.change(ob);
        System.out.println("ob.a and ob.b after call: " + ob.a + " " + ob.b);
    }
}

change() 메서드 내 변경 사항은 인수로 전달된 ob 개체에 영향을 미칩니다.

기본 유형과 객체의 차이점:
기본 유형: 값으로 전달되며 메서드 변경 사항은 원래 값에 영향을 주지 않습니다.
객체: 참조로 전달된 메서드 변경 사항은 원본 객체에 영향을 미칩니다.

최종 요약:
Java에서 인수 전달은 값 또는 참조로 이루어질 수 있습니다. 기본 유형은 값으로 전달되는 반면 객체는 참조로 전달되므로 원래 인수에 다른 영향을 미칩니다.

Como os argumentos são passados

위 내용은 인수가 전달되는 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.