2017-10-28 1 views
1

자바 프로그램에서 다른 객체와 동일한 객체를 설정하는 것이 맞습니까? 구체적으로는, 나는 이진 트리를 공부하고 난 다음 코드 발견 : Node current = root;current - current.leftChild; 모두가 다른 동일한 개체를 설정하는객체를 Java에서 다른 객체와 동일하게 정의 할 수 있습니까?

public Node find(int key) 
{ 
    Node current = root; 
    while(current.iData != key) 
    { 
     if(key < current.iData) 
     { 
      current = current.leftChild; 
     } else { 
      //... 
     } 
    } 
} 

있다. 이게 옳은 거니?

+0

그게 아니라, 아니. 현재 인스턴스를 다른 인스턴스로 설정 중입니다. – ChiefTwoPencils

+0

읽기 및 이해 https://stackoverflow.com/a/18740042/6194785 –

답변

2

다른 객체와 동일한 객체를 설정합니다. 이게 옳은 거니?

아니요, 맞지 않습니다.


실제로 어떤 변수의 참조가 다른 개체로 변경됩니다.

그래서 :

Node current = root; // "current" will point at the same object as `root`. 

current = current.leftChild; // "current" will point at the same object as `leftChild`. 

노트 - =과 참조 형식을 할당 할 때 =

할당 원시 타입은 완전히 다른 동작입니다.

+1

좋은 답변, 그냥 추가 읽기 OP에 대한 자세한 내용은 [개체 만들기에 대한 Java 자습서] (https : // docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html). –

1

먼저 Java에서 기본 개념이 필요합니다. Java는 참조로 객체를 조작하고 모든 객체 변수는 참조입니다. 당신이 사실 O1과 O2에 Object o1Object o2을 때

그래서 객체 객체 자체가 아니라를 개최 메모리 공간에 단지 참조입니다.

o1 == o2 인 경우 개체 자체가 아닌 두 참조를 비교하고 있지만 비교하려면 equals() 메서드를 재정의해야합니다.

지금, 당신의 사건에 대해 이야기하자

Node current = root;이 현재와 뿌리가 같은 개체 (메모리에 동일한 위치)를 참조 것을 의미한다. 따라서 하나의 객체와 두 개의 참조 만 있습니다.

관련 문제