作者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
1F:推 godfat:我猜他副本是指 instance XD 台湾 MMORPG 用词... 01/01 17:53
2F:→ johnhmj:虽然 JAVA 没有指标,因为源自於 C++,所以… 01/01 18:30
3F:→ johnhmj:JVM 还是会给它跑指标。 01/01 18:33
4F:推 SuperNeo:g大正解 我指的副本是instance的意思 书上也这麽写 冏 01/01 18:41
5F:→ johnhmj:是「实体」… =_=||| 01/01 18:45
6F:推 dendrobium:副本...XD 01/01 18:50
7F:推 SuperNeo:虽然以前wow打太多 不过有图有真像- - 吃饱来补图 01/01 19:03
8F:→ godfat:我以前一直以为「副本」是指backup咧,想说不知道在备份啥 01/01 19:04
9F:→ adrianshum:叫 "副本" 就代表有 "正本",这样理解class和instance 01/01 19:29
10F:→ ogamenewbie:Java源自於C++的说法是哪来的? 01/01 19:38
11F:→ erotic:所以狗、猫都是哺乳动物的副本? 01/01 20:57
12F:→ adrianshum:我之前没回完:P 这样理解是很有问题的 01/01 22:00
13F:→ leosirius:其实就跟把reference称为指标 instance称为副本也没错 01/02 10:15
14F:→ leosirius:只是把new的语法分作stack和heap部份来理解才比较完整 01/02 10:17
15F:→ leosirius:wow的instance也是同样的概念在运作~有副本不一定有正本 01/02 10:21
16F:→ adrianshum:副本这字就是代表正本的copy 吧。这字留在学 Cloneable 01/02 10:37
17F:→ adrianshum:或 Prototype pattern 才用吧。那才是 "副本" 01/02 10:39
18F:→ leosirius:就叫它"instance"吧:p 翻的越多越模糊 01/02 18:43