我在下面的练习中遇到了问题,因为我无法参加已经解释过主题的课程。我试图在youtube上帮助自己一些视频,但它并没有让我对我的结果充满信心。如果有人帮我一点,我会非常感激。
给出了以下Java代码:
public class Programstructures {
public static int f(int n, int m) {
if (0 == n) {
return m + 1;
}
if (0 == m) {
return n + 1;
}return m + n;
}
public static void main(String[] args) {
if (0 < args.length) {
int v = Integer.parseInt(args[0]);
v = f(v, Integer.parseInt(args[1]));
System.out.println(v);
}
}
}
a)调查给定程序中存在的所有变量和函数参数,无论它们是放在堆上还是放在堆栈上。
b)在函数f开始后概述堆栈的状态。
我得到了以下结果:
a)n,m,v:堆栈。 args []:堆。
b)我不确定。我在这里喜欢一些解释:/
提前致谢!
我不能把这个问题标记为家庭作业,对不起。
答案 0 :(得分:0)
堆栈是存储函数的局部变量和参数的地方。如果a()
调用b()
和b()
调用c()
,则其局部变量和参数(如果有)将存储在堆栈中。在这种情况下,a()
的变量将首先出现,然后是b()
,然后是c()
。这使得从函数返回变得容易,因为当c()
返回时,去掉它的局部变量和参数只意味着删除堆栈的最后部分。
堆基本上就是 - 一堆内存。无论何时创建对象,它都会存储在堆中的某个位置,直到完成并删除为止。
如果在函数中创建对象,则该对象将进入堆,但对该对象的引用将进入堆栈。