在Java中,数组不会覆盖toString(),因此如果您试图直接打印一个数组,则会得到数组hashCodeclassName+'@'+十六进制,如Object.toString()所定义:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

但通常情况下,我们会想要[1, 2, 3, 4, 5]个左右.最简单的方法是什么?以下是一些输入和输出示例:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]

推荐答案

由于Java5,您可以使用Arrays.toString(arr)Arrays.deepToString(arr)来表示数组中的array.请注意,Object[]版本对数组中的每个对象调用.toString().输出甚至按照您要求的方式进行装饰.

例如:

  • 简单数组:

    String[] array = new String[] {"John", "Mary", "Bob"};
    System.out.println(Arrays.toString(array));
    

    输出:

    [John, Mary, Bob]
    
  • 嵌套数组:

    String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
    System.out.println(Arrays.toString(deepArray));
    //output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
    System.out.println(Arrays.deepToString(deepArray));
    

    输出:

    [[John, Mary], [Alice, Bob]]
    
  • double Array:

    double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
    System.out.println(Arrays.toString(doubleArray));
    

    输出:

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
    
  • int Array:

    int[] intArray = { 7, 9, 5, 1, 3 };
    System.out.println(Arrays.toString(intArray));
    

    输出:

    [7, 9, 5, 1, 3 ]
    

Java相关问答推荐

如何将一些命令写入Chrome控制台,然后使用Java将输出存储在selenium中

验证使用GCP生成的非对称密钥时签名不起作用

我可以从Java模块中排除maven资源文件夹吗?

Java Streams在矩阵遍历中的性能影响

将关键字与正文中的_Allowed匹配,但带有__Signing可选后缀

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

与Spring Boot相关的实体未正确保存

Arrays.hashcode(int[])为不同的元素提供相同的散列

如何在Microronaut中将 map 读取为 map

Javadoc在方法摘要中省略方法

将PNG转换为位图自定义十六进制字符串

为什么有两种实现来检索数组类的组件类型?

使用SWIG将C++自定义单元类型转换为基本Java类型

Android Studio模拟器没有互联网

在java中使用不同的application.properties-jar而不使用Spring

记录是类的语法糖吗?

为什么相同的数据条码在视觉上看起来不同?

升级版本后出现非法访问错误

原始和参数化之间的差异调用orElseGet时可选(供应商)

SonarQube在合并升级到java17后对旧代码提出错误