我想问的是,如果我这样做
final Cat c = getBlackCat();
polishCat(c);
或者
polishCat(getBlackCat());
那些编译成同一个东西吗?什么是最佳做法?什么是记忆明智和cpu明智更好?
答案 0 :(得分:2)
在字节码级别,您必须始终明确地存储一个方法调用的结果,以便能够将其提供给下一个方法调用。您可以考虑"嵌套调用" Java中的成语只是语法上的糖。所以是的,这两段代码是等价的。
哪种风格更受欢迎是值得商榷的,并且有赞成的论点。我赞成这样的论点,即每当你在代码中明确命名一个东西时,它就会让读者有义务记住这个名字及其所指的内容。如果变量不是最终的,那么读者必须另外仔细跟踪变量的所有用法,以免在其他地方有另一个赋值,即使偶然(例如,使用=
而不是==
)。如果你内联调用方法,你就不会强加认知负荷。