作者iammarsman ( )
看板java
标题Re: [问题] JAVA创立物件与方法回传值问题
时间Sat May 10 22:42:36 2014
※ 引述《PsMonkey (痞子军团团长)》之铭言:
感谢板大的回覆~~
想请教一下关於第一种情况,
小弟印象中当new了一个物件,
JVM会在heap中配置该物件所需的记忆体,
如果有变数承接, 则会将该物件的记忆体位址传给该变数,
所以像这种没有变数承接的情况,
是否有可能会造成该记忆体区块无法被参考到,
进而导致系统效能低落呢? (GC似乎也是隔一段时间才会执行)
: ※ 引述《iammarsman ( )》之铭言:
: : new TestServerClass(); // 没有宣告物件承接新物件
: : testServerClass.secondTestMethod(); // 没有变数承接回传值
: : 以上两段程式都没有出现编译错误且可以正常执行,
: ^^^^^^^^^^^^^^^^^^^^^^^^^^
: : 想请问一下这些都是java中所允许的情形吗?
: 如果你说的「Java」是单纯的「Java 语言规格」
: 那这个问题,我觉得是自问自答啦 XD
: 不允许却可以正常执行,这是黑魔法吧? lol
: : 在什麽情况下会使用上面两种撰写方式呢?
: : 恳请赐教, 感激不尽!
: 你的问题都十分... 微妙
: 我甚至都不知道该怎麽认真回答而不被怀疑是在酸人
: (谜之声:那是因为你太爱酸人 [指])
: 基本上我会把你的问题归类为政策面的问题
: 也就是语言规范 / 语法允许你这麽作
: 没有可不可以的问题,而是适不适合这麽作的问题
: 也就会变成青菜萝卜各有所好、各说各话的状况
: (就像我不懂为什麽有人喜欢 dynamic type language [完全离题])
: new 一个 instance 但是却不 assign 给任何变数
: 这种情况比较少见
: 甚至可能在某些人的 coding style 中是错误 / 坏味道的来源
: 因为理论上应该 / 可以改用 static method 来取代...?
: 至於呼叫一个 method,明明有回传值但是却不 assign 给任何变数
: 这个状况基本上很常见,甚至你已经用了一堆只是你不知道 XD
: 尤其是在有设计 exception 的情况下
: 很多时候你不 care 回传值、你比较在意炸了什麽 exception
: 我个人最常用的就是 ArrayList.add()
: 我甚至不知道为什麽它要有回传值
: source code 当中永远回传 true
: 只能说 Collection.add() 当初设计时应该有其他考量 XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 71.187.154.74
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1399732958.A.D62.html