|
|
1
2
我认为第二种变体更糟糕。
在第一种变体中
在第二种变体中
考虑第一次呼叫时的情况
记住:Java垃圾收集器针对许多短期对象进行了优化 |
|
|
2
1
免责声明: 在阅读OP的评论时,我不得不承认我没有理解他的真正意图,即开发一个软实时应用程序,尽可能避免垃圾收集,这在Java世界中是非常特殊和罕见的情况。 所以下面的答案与他的问题不符。但是,作为一个偶然的读者,从C++迁移到java可能会遇到这个问题和答案,他/她可能会得到一些有用的暗示,典型java编程风格。 虽然java和C++的语法有很多相似之处,但是由于运行时环境非常不同,所以应该采用不同的编码风格。
作为一个几十年的Java爱好者,我当然更喜欢原始的方法签名。作为一个打电话的人
我知道,在旧的C时代,动态内存管理意味着很多头痛的事情,在函数之外准备结果数组,让函数只填充结果是很常见的,就像编写第二个版本那样。但是,用Java忘了这一点,让垃圾收集器完成它的工作(它非常擅长这项工作)。通常,试图“帮助”GC会导致实际上效率更低、更难阅读的代码。如果你真的想坚持这种风格,就不需要同时传递最大行数和数组,因为数组本身知道它的长度(这与老式的C数组不同),从而给出最大行数。 你认为
这听起来像是对Java内部工作原理的误解。每次你执行命令
但如果我正确理解它的目的,即使是第一个版本也远远不够完美。这个
还有一条评论
最后是对Java命名约定的评论:绝大多数Java代码都遵循这些约定,因此以大写字母开头的方法名称在我看来非常奇怪。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |