[問題] 物件不用配置記憶體直接可以使用嗎?

看板java作者 (大熊)時間12年前 (2013/05/14 11:42), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/2 (看更多)
先貼一下程式碼好了 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

05/14 11:47, , 1F
你用紙筆,一步一步 trace 試試
05/14 11:47, 1F
紙筆? 我想了好久就是不懂為什麼沒有記憶體位置的物件可以assign給另一個物件 ※ 編輯: gh8811211 來自: 118.168.78.114 (05/14 11:52)

05/14 11:56, , 2F
可以把head指定給newNode.next不代表head就是一個物件
05/14 11:56, 2F

05/14 11:59, , 3F
head的值有可能參考到配置好的Node<E>,也有可能是null
05/14 11:59, 3F

05/14 12:14, , 4F
看一下課本有沒有reference type的解釋
05/14 12:14, 4F

05/14 12:41, , 5F
head是reference
05/14 12:41, 5F

05/14 23:00, , 6F
這不是泛型嗎? 跟計憶體配置有啥關係?
05/14 23:00, 6F

05/14 23:09, , 7F
看懂你的問題了, head的next是null, 當然可以用
05/14 23:09, 7F

05/14 23:11, , 8F
^^第一次的
05/14 23:11, 8F
文章代碼(AID): #1HaRAybG (java)
文章代碼(AID): #1HaRAybG (java)