当前位置: 首页 > 面试题库 >

将数组分配给新变量,更改原始变量将更改新变量

孙项禹
2023-03-14
问题内容
int[] test = {0,1,2,3,4,5};
    int[] before = test;
    System.out.println(before[2]);
    test[2] = 65;
    System.out.println(before[2]);

第一个System.out打印 2 并且应该打印,而第二个System打印 65
。我已经用这种语言编程了一年多了,据我所知这是不可能发生的!有什么帮助吗?

    int first = 9;
    int second = first;
    System.out.println(second);
    first = 10;
    System.out.println(second);

上面的代码在两行上都显示 9


问题答案:

当你这样做before = test;,之前仅仅是一个参考test阵列, NO
新阵列已创建并分配给test。因此,当您查看自己的价值时,before[i]基本上就是查看的价值,test[i]反之亦然。before只是的别名test。这就是为什么在第二张照片中您得到65。

检查该文本从
Java中思考 的书,它一定会帮助你。



 类似资料:
  • 问题内容: 我想了解原始和对象引用变量的行为方式不同。我以Kathy Sierra的 OCA / OCP Java SE7中 的以下代码为例: 在上面的代码中,我获得了更改之前和之后的值。 基本变量case的输出为: 但是,在对象引用变量中,一旦更改了的值,我将获得不同的值 参考变量大小写的输出为: 书中提到在两种情况下都复制位模式并放置新副本。如果这是真的,那为什么我们会得到不同的行为呢? 问题

  • 我对java相当陌生,尽管我对C有相当基本的了解。对于我的任务,我正在计算零钱并将其排序为美国货币(也就是说,如果你有105美分,它会把它分成1美元和1角)。从逻辑上讲,我明白如何做到这一点,但我在理解java语法方面遇到了一些严重的困难。我很难找到一种方法将用户输入的值分配给我创建的变量。在C语言中,你只需使用cin,但Java在这方面似乎要复杂得多。 以下是我目前的代码: 如果您能帮我将用户输

  • 问题内容: 我有一个清单,我创建了一个清单以进行一些操作,同时仍保留原始清单。但是,当我设置copy_list等于时,它们将变为同一事物,并且如果我更改,它们也会更改。例如: 退货 我对实际发生的事情不太了解,但看起来org_list实际上是将自身传递给copy_list他们,因此它们实际上是同一回事。 有没有一种方法可以制作org_list的独立副本,而又不需要做一些笨拙的事情: 我之所以这样说

  • 问题内容: 我有一个测试用例,可以访问浏览器并对其进行处理。但是我需要以编程方式更改某些文本框的输入内容。我有8个字符串和一个布尔值,表示测试需要正确运行。问题是,您必须先通过ant和构建过程运行测试用例,然后才能实际运行它。我希望能够构建它,将其放在设备上,然后在我调用它时以某种方式将数据传递给设备。但是我不知道那是否可能。我目前唯一想到的选择是编写一个快速的Java程序,将其写入文件,更改变量

  • 问题内容: 假设我有一个功能 现在,我想将函数分配给一个名为的变量,这样,如果我使用,它将再次调用该函数。如果我只是做作业,它就会返回。 问题答案: 您根本不调用该函数。 括号告诉蟒蛇,你调用的函数,所以当你把它们放在那里,它调用的功能,并指定值 返回 的(在这种情况下)。

  • 问题内容: 字符串是不可变的,这是否意味着我总是必须通过将字符串传递给方法来做类似的事情? 或者是 精细?我尝试了第二个,它没有给我任何错误,为什么? 问题答案: 字符串是不可变的 是的,您自己承认。不可变 对象 是不允许其状态更改的对象。这包括对象。 然后: 创建一个 新 的小写字母字符串, 并且不使用result 。在这种情况下,这很可能是一个“错误”,因为它仍然评估原始字符串对象(由于它是不