Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用方法的哪些方法可以提供最佳性能_Java_Performance - Fatal编程技术网

Java 调用方法的哪些方法可以提供最佳性能

Java 调用方法的哪些方法可以提供最佳性能,java,performance,Java,Performance,我想问的是如果我这样做了 final Cat c = getBlackCat(); polishCat(c); 或 这些都被编译成相同的东西吗?最佳做法是什么?在字节码级别,您必须始终明确地存储一个方法调用的结果,以便能够将其提供给下一个方法调用。你可以把java中的“嵌套调用”习惯看作是语法上的糖。是的,这两段代码是等价的 哪一种在文体上更受欢迎尚有待商榷,也有支持这两种观点的论据。我支持这样一种观点,即每次在代码中显式地命名一个事物时,读者就有义务记住该名称及其所指内容。如果变量不是fin

我想问的是如果我这样做了

final Cat c = getBlackCat();
polishCat(c);


这些都被编译成相同的东西吗?最佳做法是什么?在字节码级别,您必须始终明确地存储一个方法调用的结果,以便能够将其提供给下一个方法调用。你可以把java中的“嵌套调用”习惯看作是语法上的糖。是的,这两段代码是等价的


哪一种在文体上更受欢迎尚有待商榷,也有支持这两种观点的论据。我支持这样一种观点,即每次在代码中显式地命名一个事物时,读者就有义务记住该名称及其所指内容。如果变量不是final,则读取器还必须仔细跟踪变量的所有用法,以免在其他地方出现另一个赋值,即使是偶然的(例如,使用
=
而不是
=
)。如果你内联调用方法,你就不会强加这种认知负荷。

是否
getBlackCat
返回
final Cat
?这看起来像是风格/观点的问题。我相信您的编译器应该自动进行优化。在我看来,第一种样式更易于阅读和调试。@marounnaroun这是Java,而不是C。唯一的“final”表示引用不能更改。方法无法选择返回“Cat”还是“final Cat”。它总是返回一个对Cat对象的不可变引用。我更喜欢第二个示例,imho,它更具可读性(作为一个读者,我知道我在代码后面不需要Cat-我只想润色我的黑猫)。调试时我看不出有什么问题。@MarkoTopolnik将引用称为“不可变”并不奇怪,它与它的抽象性无关。不可变引用不能修改,就是这样。第一个引用需要存储,然后加载。第二个方法只是将
getBlackCat()
的结果推送到堆栈上,并调用下一个方法。不,它不需要任何这样的东西。局部变量只是特定结果的名称,它们本身不需要任何加载和存储操作。也许一个非常不优化的编译器可能会发出这样的机器代码,但这并不是因为需要这样做。
polishCat(getBlackCat());