返回布尔值数组时得到奇怪的结果

Getting weird result when returning an array of boolean values

我怎么办 编写一个带有 void return 值的方法,该方法反转二维布尔数组的所有元素(true 变为 false,false 变为 true),其中包括用于测试您的方法的代码。输出应显示数组在反转之前和之后的所有值。

现在我已经完成了代码,但是当我开始使用 System.out.println 来显示数组时,我在答案中弹出了一些奇怪的值。谁能帮帮我。 这是代码:

public class TF
{
   public static void main(String[] args)
{
   boolean [][] bArray = {{false,false,true},{true,false,true}};

   System.out.println("This is before: " + bArray);

   for(int i = 0; i > bArray.length; i++)
   {
     for(int j = 0; j < bArray[i].length; i++)
     {
        bArray[i][j] = !(bArray[i][j]);
     }//endfor(j)
    }//endfor(i)

    System.out.println("This is after: " + bArray);
}//endmain
}//end TF

这是我得到的return类型:

This is before: [[Z@69ed56e2
This is after: [[Z@69ed56e2

有人知道我为什么会收到这个吗?

在 Java 中,当您尝试将数组转换为字符串时,您将获得数组的零索引地址,这就是为什么您会在控制台上看到大量信息的原因。

要打印出数组中的值,请使用限制在数组 .length 属性 上的 for 循环(这是所有 Java 数组中内置的,因此您不必不用担心):

for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

要以视觉上令人愉悦的格式打印出二维数组的内容,您可以使用我编写的这段代码或执行类似的操作:

// "Pretty print" 2D array
System.out.print("[");
for (int i = 0; i < bArray.length; i++) {
    System.out.print("[");
    for (int j = 0; j < bArray[i].length; j++) {
        System.out.print(bArray[i][j] + ((j < bArray[i].length - 1) ? ", " : ""));
    }
    System.out.print("]" + ((i < bArray.length - 1) ? ", " : ""));
}
System.out.println("]");

是的。数组是 Object(s) 并继承(但不是 OverrideObject.toString() 并且 javadoc 说(部分)

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

相反,您可以使用 Arrays.deepToString(Object[]) like

System.out.println("This is before: " + Arrays.deepToString(bArray));

此外,

for(int j = 0; j < bArray[i].length; i++)

应该是

for(int j = 0; j < bArray[i].length; j++)