|
|
1
7
第二个是我喜欢的。除了范围界定之外,没有其他功能上的区别。
在每次迭代中设置相同的变量没有区别,因为
另外,在这段代码中,您应该使用
编辑: 我已经有一段时间没在字节码里乱搞了,所以我想我的手又脏了。 下面是我编译的测试类:
与我的预期相反,这两者之间有一个区别:在
JIT编译器应该对这种差异进行简短的处理,但是您仍然可以看到限制作用域是一种很好的做法。
(关于我前面的旁注,您可以看到,要添加两个Integer对象,Java必须用
|
|
|
2
4
第二个更好,因为第一个样式is应该只在C代码中作为强制样式使用。Java允许内联声明来最小化变量的作用域,您应该利用这一点。但您的代码可以进一步改进:
它遵循Java代码风格惯例。请在此处阅读完整指南: http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html |
|
|
3
0
除了在上一次迭代中,在第二个例子中,当引用被更快地清除时(这将是我的偏好-不是因为这个原因,而是因为清晰),它没有什么显著的区别 尽量缩小范围。hotspot VM逃避分析,以确定何时不再可以访问引用,并在此基础上在堆栈而不是堆上分配一些对象。保持尽可能小的范围有助于这个过程。
我会问你为什么用整数而不是简单的
|
|
|
4
0
第二个更好。尽可能缩小变量的范围,使代码更容易理解 阅读 和 保持 ,总的来说,这比这些示例之间的性能差异要重要得多,这些差异很小,很容易优化掉。 |
|
|
5
0
都不是。
|
|
|
6
0
在这个例子中,你要实例化一个
现在我们回到是将int声明放在内部还是外部的问题。假设Java编译器有一些不错的优化,我认为这无关紧要。撇开效率不谈,声明尽可能接近其用途的变量被认为是良好的做法。 |
|
|
7
0
在可读性、可维护性和效率方面,第二种方法是两种方法中最好的一种。
|
|
|
8
0
假设你的单子上有正数,你是认真的
你应该自己实现它,比如:
唯一与GC相关的事情是
|
|
|
9
0
使用什么变量范围的问题是一个可读性问题。当每个变量都被限制在实际使用的范围内时,代码就更容易理解了。 现在,如果我们检查使用宽/窄范围的技术后果,我相信窄范围有性能/占用空间优势。考虑以下方法,其中我们有3个局部变量,属于一个全局范围:
如果您分解此代码(例如使用javap-c-verbose{classname}),您将看到编译器保留 3个插槽 对于test()方法的堆栈帧结构中的局部变量。 现在,假设我们添加了一些人工作用域:
如果您现在分解代码,您将注意到编译器保留了 只有1个插槽 对于局部变量。由于作用域是完全独立的,每次使用x、y或z时,都会使用相同的槽0。
1) 窄范围节省堆栈空间 2) 如果我们处理的是对象变量,这意味着对象可能会更快地变得不可访问,因此比其他情况更快地符合GC的条件。 再次请注意,这两个“优点”实际上是次要的,可读性问题应该是目前为止最重要的问题。 |
|
10
-1
第二个,因为您希望将变量的范围保持为尽可能的“内部”。范围小的优点是碰撞的机会小。在您的示例中,只有几行,因此优势可能不那么明显。但是如果它更大,那么使用更小的范围变量肯定更有益。如果其他人以后要查看代码,他们必须一直扫描回方法定义的正外部,才能知道是什么 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |