看板 java 關於我們 聯絡資訊
先貼一下程式碼好了 public class LinkedListProblem<E> { private Node<E> head, tail; private int size; public LinkedListProblem() { size = 0; } public void addFirst(E e) { Node<E> newNode = new Node<E>(e); newNode.next = head; head = newNode; size++; if (tail == null) tail = head; } public String toString() { StringBuilder result = new StringBuilder("["); Node<E> current = head; for (int i = 0; i < size; i++) { result.append(current.element); current = current.next; if (current != null) { result.append(", "); } else { result.append("]"); } } return result.toString(); } private class Node<E> { E element; Node<E> next; public Node(E element) { this.element = element; } } } 擷取課本上的範例 想請問 成員物件 head 在這個程式碼並沒有被配置記憶體 (new 出實體物件或是有其他記憶體直接assign) 為什麼在addFirst方法中 第二行 可以直接將head物件assign給newNode.next 想來想去實在很奇怪阿~~~~~~~~~(這程式的確可以跑 = =) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.78.114
qrtt1:你用紙筆,一步一步 trace 試試 05/14 11:47
紙筆? 我想了好久就是不懂為什麼沒有記憶體位置的物件可以assign給另一個物件 ※ 編輯: gh8811211 來自: 118.168.78.114 (05/14 11:52)
elba:可以把head指定給newNode.next不代表head就是一個物件 05/14 11:56
elba:head的值有可能參考到配置好的Node<E>,也有可能是null 05/14 11:59
elba:看一下課本有沒有reference type的解釋 05/14 12:14
chchwy:head是reference 05/14 12:41
realmeat:這不是泛型嗎? 跟計憶體配置有啥關係? 05/14 23:00
realmeat:看懂你的問題了, head的next是null, 當然可以用 05/14 23:09
realmeat: ^^第一次的 05/14 23:11