2017-05-13 5 views
-5

예를 들어, 저는 Car 클래스가 있고 BMW와 Benz 클래스 Car를 가지고 있습니다. 인스턴스화를 위해 우리는 새로운 변수를 선언해야합니다. 객체가클래스 변수와 클래스 인스턴스의 차이점은 무엇입니까?

Car Benz;

첫 번째 참조로 전달하고 두 번째는 값으로 전달하는 경우로 선언 어떤 경우 지금

Car BMW = new Car();

, 누구에 의해 스와핑을하고 나를 도와 드릴까요 예제를 사용하여 객체를 인스턴스화 하시겠습니까?

+0

값에 의해 패스와 참조로 전달 함수/메서드에 매개 변수를 전달을 의미한다 - 분명히하시기 바랍니다 귀하의 질문 - 당신에 대해 아무것도 언급하지 않는. 우리는 두 변수를 교환하는 방법을 만들고 싶다고 추측 할 수도 있지만, 원하는 것을 알려주는 것이 좋습니다. 또한 Java는 pass-by 값만 지원합니다. – nos

+3

당신은 ** 변수 **와 ** 객체 **의 차이점을 이해해야합니다. 마치 이것들이 똑같은 것처럼 작성하고 있습니다. 변수 *는 객체를 가리키며 객체 자체가 아닙니다. 'Car Benz;'는 변수를 초기화하지 않고 선언 만하고, 관련된 객체가 없습니다. – Jesper

+0

@nos 좋습니다.하지만 실험을 해보았습니다. 위에서 언급 한 코드에서이 주소를 추가하십시오. 실제로 System.out.println (aDog);은 실제로 등록 된 주소를 나타내는 16 진수입니다. 즉 aDog은 실제로 메모리 위치를 나타냅니다. 나는 자바 초보자이며 사실 자바에서 o'reilly가 작성한 자바 프로그래밍을 통해 기본적으로 jave가 매개 변수를 참조로 전달한다고 설명했다. – shiva

답변

0
public class A{ 
    int count = 1; 
} 

public class Main{ 

public static void main(String[] args) { 

    A a = new A(); 
    A b = new A(); 
    b.count = 2; 

    System.out.println("Before swap"); 

    System.out.println("A count : "+a.count); 
    System.out.println("B count : "+b.count); 

    A c = b; 
    b = a; 
    a = c; 

    System.out.println("Before swap"); 

    System.out.println("A count : "+a.count); 
    System.out.println("B count : "+b.count); 


} 

}

+0

내가 무슨 뜻인지 이해하지 못했습니다. 주 기능에서 이와 같은 것을 교환 할 수 있습니다. 하지만 함수 'swap (a, b);와 같은 함수를 호출하여 교환하는 것이 좋겠습니다. 실제로 a를 b와 b로 만듭니다. C 및 C++에서 포인터를 검사하면 더 명확하게 알 수 있습니다. – shiva

+0

http://www.geeksforgeeks.org/swap-exchange-objects-java/ –

+0

@shiva 왜?어쨌든 함수의 매개 변수를 수정하면 호출 함수는 그 변경 사항을 보지 못합니다. 매개 변수 값은 해당 함수에 대해 로컬입니다. 이러한 매개 변수가 참조이고 참조 된 객체 내에서 * 변경된 경우 해당 변경 사항이 호출 함수에 반영됩니다. –