作者adrianshum (Alien)
看板java
標題Re: [問題] new 語法的疑問
時間Fri Jan 1 17:30:41 2010
※ 引述《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
推 godfat:我猜他副本是指 instance XD 台灣 MMORPG 用詞... 01/01 17:53
→ johnhmj:雖然 JAVA 沒有指標,因為源自於 C++,所以… 01/01 18:30
→ johnhmj:JVM 還是會給它跑指標。 01/01 18:33
推 SuperNeo:g大正解 我指的副本是instance的意思 書上也這麼寫 冏 01/01 18:41
→ johnhmj:是「實體」… =_=||| 01/01 18:45
推 dendrobium:副本...XD 01/01 18:50
推 SuperNeo:雖然以前wow打太多 不過有圖有真像- - 吃飽來補圖 01/01 19:03
→ godfat:我以前一直以為「副本」是指backup咧,想說不知道在備份啥 01/01 19:04
→ adrianshum:叫 "副本" 就代表有 "正本",這樣理解class和instance 01/01 19:29
→ ogamenewbie:Java源自於C++的說法是哪來的? 01/01 19:38
→ erotic:所以狗、貓都是哺乳動物的副本? 01/01 20:57
→ adrianshum:我之前沒回完:P 這樣理解是很有問題的 01/01 22:00
→ leosirius:其實就跟把reference稱為指標 instance稱為副本也沒錯 01/02 10:15
→ leosirius:只是把new的語法分作stack和heap部份來理解才比較完整 01/02 10:17
→ leosirius:wow的instance也是同樣的概念在運作~有副本不一定有正本 01/02 10:21
→ adrianshum:副本這字就是代表正本的copy 吧。這字留在學 Cloneable 01/02 10:37
→ adrianshum:或 Prototype pattern 才用吧。那才是 "副本" 01/02 10:39
→ leosirius:就叫它"instance"吧:p 翻的越多越模糊 01/02 18:43