-4

由于我无法参加已解释该主题的课程,因此我对以下练习有疑问。我试图通过 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) 我不确定。我想在这里做一些解释:/

提前致谢!

我无法将问题标记为作业,抱歉。

4

1 回答 1

0

堆栈是存储局部变量和函数参数的地方。如果a()调用b()b()调用c(),则它们的局部变量和参数(如果有)将存储在堆栈中。在这种情况下,a()' 变量将首先出现,然后b()是 's,然后c()是 's。这使得从函数返回变得容易,因为当c()返回时,摆脱它的局部变量和参数只是意味着删除堆栈的最后一部分。

基本上就是一个内存堆。每当您创建一个对象时,它都会存储在堆中的某个位置,直到它被最终确定和删除。

如果在函数中创建对象,该对象将在堆上,但对该对象的引用将在堆栈上。

于 2014-11-29T20:03:59.643 回答