gpt4 book ai didi

java - 返回变量和返回计算值的区别

转载 作者:行者123 更新时间:2023-11-29 04:37:54 24 4
gpt4 key购买 nike

在 Java 中创建返回值的方法时,我总是可以返回计算值或保存该值的变量。例如:

public int sum(int a, int b) 
{
return a+b;
}

和:

public int sum(int a, int b) 
{
int res = a + b;
return res;
}

我的问题是,除了可读性之外,第一种方法和第二种方法有什么区别?

return 语句是如何工作的?它是否在将变量“返回”到调用方法的位置之前创建了一个变量?

就节省内存而言,哪个版本最好?我只是举了一个简单的例子,但这个问题代表了每一种返回方法。

最佳答案

I can always return a calculation or a variable that holds said calculation.

这是错误的。您返回的是一个值,而不是计算。

除了你的措辞,没有什么不同。 Java 编译器可能会在这两种情况下生成相同的字节码,因为它会将 res 视为要优化掉的中间占位符。

要了解 Java 的 return 语句的工作原理,您必须了解 Java 字节码 ABI 的工作原理。您会注意到 JVM 是一个堆栈机器 - 因此,无论您之前做什么,返回值都将在函数调用结束时位于堆栈顶部,如果我没记错的话。

请注意,尽管有进一步的编译时优化——没有人说 Javac 可能不会“内联”一个没有副作用的方法调用。但是,一旦我们谈论“智能”优化,询问特定语言概念如何工作可能就成为一个有争议的问题,因为它们可能会被优化掉。

关于java - 返回变量和返回计算值的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com