나는 java를 처음 사용했습니다. 질문이 명확하지 않을 수 있습니다. 코드 사용법을 설명하겠습니다. 아래 코드는 링크 된 목록의 값을 출력하는 함수입니다. 함수의 첫 번째 줄은 HeadNode 참조가 가리키는 동일한 개체를 가리키는 참조를 만듭니다. 따라서 currentNode를 변경하면 HeadNode가 가리키는 객체에 영향을줍니다. while 루프 내에서 currentNode를 변경하려고합니다. 그러나 함수를 종료 한 후에 linkedList가 변경되지 않았 음을 확인합니다. 왜?함수의 매개 변수 값을 변경하지 않는 함수에서 참조를 만드는 방법은 무엇입니까?
static void PrintLinkedList(ListNode HeadNode)
{
ListNode currentNode = HeadNode;
while(currentNode != null)
{
System.out.println(currentNode.getData());
currentNode = currentNode.getNext();
}
}
UPDATE : 나는 LinkedList의 반전하는 함수를 구현하면 다음 코드가 실행 된 후이 후 질문을 위로 가져 날의 이유는, 내 tempNode가 null이 될 것을
:static ListNode ReverseLinkedList(ListNode headNode)
{
ListNode headNodeTemp = headNode;
headNodeTemp.setNext(null);
ListNode tempNode = headNode.getNext(); //temp becomes null because headNode is changed. Why??
ListNode currentNode = headNodeTemp;
while(tempNode != null)
{...
그러나 currentNode는 해당 객체를 참조합니다. 따라서 currentNode의 모든 변경 사항은 객체를 변경합니다. 권리? – user1701840
아니요, 'currentNode'는 객체의 주소를 보유하는 변수 일뿐입니다. 'currentNode'에 대한 변경은'currentNode'가 가리키는 것을 바꿉니다. 'currentNode'가 가리키는 객체를 변경하려면 메소드를 호출하거나 속성을 설정해야합니다. 'currentNode.mutate();'는 객체를 변경시킵니다. –
광산을 읽으십시오. 분명히 밝힙니다. 그렇지 않다면 핑을하십시오. 개체를 변경하지 않으려면 개체를 변경하는 메서드를 호출하면 안됩니다. 그러나 아마 그것은 질서의 문제라고 생각합니다. –