java - 打印出 java 练习解释

标签 java

我正在尝试理解以下 Java 练习。即使运行调试器我也不明白第二个和第三个打印输出的细节:

1, 2, 3, 4

1, 2, 4, 4

1, 2, 4, 8

我知道第一行打印的是数组,第二行打印数组的 [2] 元素,第三行打印 [3] 元素。这是代码:

public class TR1
{
    public static void main(String[] args)
    {
        int[] v =  {1, 2, 3, 4 };
        print(v);
        x(v, v[2] - 1);
        print(v);
        x(v, v[3] - 1);
        print(v);
    }

    public static void x(int array[], int y)
    {
        array[y] = array[y - 1] * 2;
    }

    public static void print(int array[])
    {
        System.out.print(array[0]);
        for (int i = 1; i < array.length; i++)
            System.out.print(", " + array[i]);
        System.out.println();
    }
}

最佳答案

让我们简要介绍一下发生的第一件事。你从这个数组开始:

1 2 3 4

打印时毫不奇怪。

然后你运行:

x(v, v[2] -1 ) ... evaluates to

x(v, 3 - 1)    ... evaluates to

x(v, 2)

根据以下内容更改数组:

array[y] = array[y - 1] * 2;

让 y 插入 2(见上文):

array[2] = array[1] * 2;

array[2] = 2 * 2;

导致:

1, 2, 4, 4

所以,真正的答案是:您甚至不需要调试器。一张纸、一支笔、一点思考,更能有效揭开这里的“ secret ”。

关于java - 打印出 java 练习解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43982169/

相关文章:

java - 由于 spring security,无法访问 spring-boot 项目中的 Assets

java - 为什么java线程wait()只能在有时间限制的情况下工作?

java - 栈式linkedList中的push函数是如何工作的?

Java程序根据字符串比较不退出

Java和MySql连接问题

java - 处理同一组元素中包含的不同对象类型

java - 如何创建具有关联值(如 Swift 枚举)的 Java 枚举?

java - Swing 应用程序中的动态按钮放置问题

java - 运行可执行 jar 时打印编写器不工作

java - Jvm 会加载一个类文件两次吗?