Re: [問題] new 語法的疑問

看板java作者 (Alien)時間14年前 (2010/01/01 17:30), 編輯推噓4(4014)
留言18則, 8人參與, 最新討論串2/10 (看更多)
※ 引述《SuperNeo (潛水初號機)》之銘言: : 目前正在自修JAVA,遇到問題只能看書、找良葛格、估狗大師 : 查完之後還是不太了解 new 的語法 : 僅知如: : Circle c1 = new Circle(); // 建立Circle類別的副本,名字是c1 ^^^^ 根本不是什麼副本。 Circle c1 有一指向 Circle 的 "指標" (reference),叫 c1 new Circle() 生成一個新的 Circle 物件 (或 實例 instance) c1 = .... 把 c1 指向剛生來來的那個物件 (指標不是通用的 "reference" 的翻譯,但我覺得這裡這樣說比較 容易理解一點) : 但是下面這行就讓我亂掉了 : Shape c2 = new Circle(); // 這行我無法用中文翻譯-_- 有一指向 "Shape" 的指標 叫 c2 指向 新生成的 Circle 物件 : 所以我想弄懂的是 : 最前面的 Circle、Shape 跟最後面的Circle、Shape 各代表什麼意思 : A c1 = new A(); : 2個A分別代表的意思 例如:前面的A是參考物件 後面的A是??? 前面是宣告了一個 A 的 reference, 叫 c1 後面是 生成一個新的 A 物件 : 附上 此範例程式碼 (43) : 程式碼是手key的,有錯字請見諒 -_- : 因為看到字串的宣告部份又出現可怕的new運算子 : 所以才回頭用上述的前範例發問。 : 下面是陣列部份遇到不知差別在哪的語法: : //宣告一個int陣列 叫temp : int[] temp; 宣告一個 int array *的 reference* 叫 temp : //宣告一個int陣列 叫tips 並放入3個元素 : int[] tips = {100,200,500}; {100,200,500} 你想成是生成 array 的特別語法 這裡生成了一個三個元素的 array, 然後 tips 指向這個 array : //宣告一個倍精準的陣列"副本"? 叫scores。 並宣告他有5個元素? : double[] scores = new double[5]; new double[5]; 生成一個 5 元素大的 double 的 array. scores = ..... score 指向該 array : 不懂為何這理要多一個new運算子 : -----------------------------抱怨分隔線---------------------------- : 認識的朋友 都是C# .NET派流,所以自修的頗辛苦 這堆和 C# 的理解方法沒什麼分別。 : 加上英文又破,只要連結是英文的就沒耐心看完他。-_-" : 目前自修的書是 "Java2 程式設計範本 陳會安著" : 一直在Console地方排迴,字串章節部份 突然又 : 暴增一堆語法實在很難消化…也記不起來 Orz : 到現在連個自用小零用金的應用程式也寫不出來 : 但直接跳SWING章節 又太多看不懂的地方 : 實在是很沒自信心如何能coding出東西… : -----------------------------抱怨分隔線---------------------------- : 麻煩前輩指點new運算子的語法 萬分感謝。 new Foo(....); 生成一個 Foo 的物件,括號內的就是指明了用哪一個 constructor new Foo[n]; 生成一個 Foo 的 array, 共有 n 元素長。 new 就這兩種用法而已。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.77.15.226

01/01 17:53, , 1F
我猜他副本是指 instance XD 台灣 MMORPG 用詞...
01/01 17:53, 1F

01/01 18:30, , 2F
雖然 JAVA 沒有指標,因為源自於 C++,所以…
01/01 18:30, 2F

01/01 18:33, , 3F
JVM 還是會給它跑指標。
01/01 18:33, 3F

01/01 18:41, , 4F
g大正解 我指的副本是instance的意思 書上也這麼寫 冏
01/01 18:41, 4F

01/01 18:45, , 5F
是「實體」… =_=|||
01/01 18:45, 5F

01/01 18:50, , 6F
副本...XD
01/01 18:50, 6F

01/01 19:03, , 7F
雖然以前wow打太多 不過有圖有真像- - 吃飽來補圖
01/01 19:03, 7F

01/01 19:04, , 8F
我以前一直以為「副本」是指backup咧,想說不知道在備份啥
01/01 19:04, 8F

01/01 19:29, , 9F
叫 "副本" 就代表有 "正本",這樣理解class和instance
01/01 19:29, 9F

01/01 19:38, , 10F
Java源自於C++的說法是哪來的?
01/01 19:38, 10F

01/01 20:57, , 11F
所以狗、貓都是哺乳動物的副本?
01/01 20:57, 11F

01/01 22:00, , 12F
我之前沒回完:P 這樣理解是很有問題的
01/01 22:00, 12F

01/02 10:15, , 13F
其實就跟把reference稱為指標 instance稱為副本也沒錯
01/02 10:15, 13F

01/02 10:17, , 14F
只是把new的語法分作stack和heap部份來理解才比較完整
01/02 10:17, 14F

01/02 10:21, , 15F
wow的instance也是同樣的概念在運作~有副本不一定有正本
01/02 10:21, 15F

01/02 10:37, , 16F
副本這字就是代表正本的copy 吧。這字留在學 Cloneable
01/02 10:37, 16F

01/02 10:39, , 17F
或 Prototype pattern 才用吧。那才是 "副本"
01/02 10:39, 17F

01/02 18:43, , 18F
就叫它"instance"吧:p 翻的越多越模糊
01/02 18:43, 18F
文章代碼(AID): #1BFS34Dp (java)
討論串 (同標題文章)
文章代碼(AID): #1BFS34Dp (java)