java数组上的代码段

java数组上的代码段,java,Java,所以我在做复习,遇到了一个我不太确定的问题 考虑以下代码段: int[] A = {1,2,3}; int[] B = {1,2,3}; int[] C = A; 执行此代码后,下列哪个表达式的计算结果为true I. A.equals (B) II. A == B III. A ==C 我只是 二只 三只 只有我和我 一、 二、三 我以为只有我一个人,但我的一个同学说只有我三岁 请解释一下好吗 谢谢你的帮助。答案在上面@J L的链接问题中: Arrays.equals(array

所以我在做复习,遇到了一个我不太确定的问题

考虑以下代码段:

int[] A = {1,2,3};

int[] B = {1,2,3};

int[] C = A;
执行此代码后,下列哪个表达式的计算结果为true

I.  A.equals (B)

II. A == B

III. A ==C
我只是

二只

三只

只有我和我

一、 二、三

我以为只有我一个人,但我的一个同学说只有我三岁

请解释一下好吗


谢谢你的帮助。

答案在上面@J L的链接问题中:

Arrays.equals(array1,array2)的工作方式与您预期的一样(即比较 内容),array1.equals(array2)返回到Object.equals 实现,这反过来又比较了身份,因此更好 替换为==(对于纯粹主义者:是的,我知道null)

简单地说,您将C设置为A,这就是为什么A==C是真的。您正在执行一个
对象。实际上等于
。虽然表面上看来
A.equals(B)
是正确的,但这并不是因为
Object.equals
背后的内部结构


所以你的朋友是对的。

答案在上面@J L的链接问题中:

Arrays.equals(array1,array2)的工作方式与您预期的一样(即比较 内容),array1.equals(array2)返回到Object.equals 实现,这反过来又比较了身份,因此更好 替换为==(对于纯粹主义者:是的,我知道null)

简单地说,您将C设置为A,这就是为什么A==C是真的。您正在执行一个
对象。实际上等于
。虽然表面上看来
A.equals(B)
是正确的,但这并不是因为
Object.equals
背后的内部结构


所以你的朋友是对的。

第三个字母a和c指向同一个物体。其他的没有。

第三个有a和c指向同一个对象。其他人没有。

你的朋友是对的

在代码中你说的是C=A

这意味着C与A是完全相同的对象

在其他情况下,它们不是相同的对象,尽管它们具有相同的内容

您可能需要查看Arrays.deepEquals,它返回true(您的代码稍有修改):

封装阵列

导入java.util.array

public class ArraysTest {
    public static void main(String[] args) {
      Integer[] A = { 1, 2, 3 };
      Integer[] B = { 1, 2, 3 };
      Integer[] C = A;
      System.out.println("A.equals(B) is " + (A.equals(B)));
      System.out.println("Arrays.deepEquals(A, B) is "
   + (Arrays.deepEquals(A, B)));
      System.out.println("A == B is " + (A == B));
      System.out.println("A == C is " + (A == C));
    }
}
输出将是:

A.equals(B) is false
Arrays.deepEquals(a, b) is true
A == B is false
A == C is true

你的朋友是对的

在代码中你说的是C=A

这意味着C与A是完全相同的对象

在其他情况下,它们不是相同的对象,尽管它们具有相同的内容

您可能需要查看Arrays.deepEquals,它返回true(您的代码稍有修改):

封装阵列

导入java.util.array

public class ArraysTest {
    public static void main(String[] args) {
      Integer[] A = { 1, 2, 3 };
      Integer[] B = { 1, 2, 3 };
      Integer[] C = A;
      System.out.println("A.equals(B) is " + (A.equals(B)));
      System.out.println("Arrays.deepEquals(A, B) is "
   + (Arrays.deepEquals(A, B)));
      System.out.println("A == B is " + (A == B));
      System.out.println("A == C is " + (A == C));
    }
}
输出将是:

A.equals(B) is false
Arrays.deepEquals(a, b) is true
A == B is false
A == C is true

只有第三个是真的

拿第一个来说

int[] A = {1,2,3};
开关表示A具有位置0:1、位置1:2、位置2:3

那就走第二条

int[] B = {1,2,3};
开关表示B具有位置0:1、位置1:2、位置2:3

所以它们在每个位置都有相同的值,但它们是两个不同的int数组

但是再看第三个

int[] C = A;
他们的意思是,`int[]C等于int[]A

就像说

String a = "LOL";
String b = a;
还有几个注意事项,只有字符串使用
进行比较。其他任何内容都使用
=
进行比较,并且始终使用小写字母作为变量,这使得编码更容易

您始终可以使用此工具测试方法

if(A.equals(B)
{
    System.out.println("A.equals(B) is true");
}
else
{
    System.out.println("A.equals(B) is false";
}
同样适用于

if(A == B)
{
    System.out.println("A == B is true");
}
else
{
    System.out.println("A == B is false");
}

希望这有帮助,卢克。

只有第三个是真的

拿第一个来说

int[] A = {1,2,3};
开关表示A具有位置0:1、位置1:2、位置2:3

那就走第二条

int[] B = {1,2,3};
开关表示B具有位置0:1、位置1:2、位置2:3

所以它们在每个位置都有相同的值,但它们是两个不同的int数组

但是再看第三个

int[] C = A;
他们的意思是,`int[]C等于int[]A

就像说

String a = "LOL";
String b = a;
还有几个注意事项,只有字符串使用
进行比较。其他任何内容都使用
=
进行比较,并且始终使用小写字母作为变量,这使得编码更容易

您始终可以使用此工具测试方法

if(A.equals(B)
{
    System.out.println("A.equals(B) is true");
}
else
{
    System.out.println("A.equals(B) is false";
}
同样适用于

if(A == B)
{
    System.out.println("A == B is true");
}
else
{
    System.out.println("A == B is false");
}

希望这有帮助,Luke。

你可以很容易地测试它。是的,我认为你的朋友是对的,请看这个问题了解更多细节:请对Java变量使用小写名称。你可以很容易地测试它。是的,我认为你的朋友是对的,请看这个问题了解更多细节:请对Java变量使用小写名称。