Re: [问题] JAVA创立物件与方法回传值问题

楼主: iammarsman ( )   2014-05-10 22:42:36
※ 引述《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

Links booklink

Contact Us: admin [ a t ] ucptt.com