在Java中,数组不会覆盖toString(),因此如果您尝试直接打印数组,则会获得className + @ + className数组的十六进制,如下所示hashCode:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
Run Code Online (Sandbox Code Playgroud)
但通常我们实际上想要更像的东西Object.toString().这样做最简单的方法是什么?以下是一些示例输入和输出:
// 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]
Run Code Online (Sandbox Code Playgroud) 我有一个类定义如下:
public class Person {
private String name;
// constructor and getter/setter omitted
}
Run Code Online (Sandbox Code Playgroud)
我试图打印我的班级实例:
System.out.println(myPerson);
Run Code Online (Sandbox Code Playgroud)
但我得到了以下输出:com.foo.Person@2f92e0f4.
当我尝试打印一个Person对象数组时发生了类似的事情:
Person[] people = //...
System.out.println(people);
Run Code Online (Sandbox Code Playgroud)
我得到了输出: [Lcom.foo.Person;@28a418fc
这个输出是什么意思?如何更改此输出以使其包含我的人名?我如何打印我的对象集合?
注意:这是关于此主题的规范问答.
在JDK或Jakarta Commons(或其他任何地方)中是否存在可以解析Arrays.toString输出的方法,至少对于整数数组?
int[] i = fromString(Arrays.toString(new int[] { 1, 2, 3} );
Run Code Online (Sandbox Code Playgroud) 如何int[]在Java中转换为逗号分隔的String?
int[] intArray = {234, 808, 342};
Run Code Online (Sandbox Code Playgroud)
结果我想:
"234, 808, 342"
Run Code Online (Sandbox Code Playgroud)
这里有非常相似的参考问题,但这些解决方案都没有提供我需要的结果.
到目前为止我尝试过的,
String commaSeparatedUserIds = Arrays.toString(intArray); // result: "[234, 808, 342]"
String commaSeparatedUserIds = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", ""); // result: "234808342"
String commaSeparatedUserIds = intArray.toString(); // garbage result
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的方法:
void foo (List<String> list, ...) {
...
for (String s : list) { // this is the only place where `list` is used
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果我替换List<String> list,完全相同的代码将工作String[] list,但是,为了避免意大利面条代码,我保持单一方法,当我需要在数组上调用它时a,我这样做:foo(Arrays.asList(a)).
我想知道这是不是正确的方法.
特别,
Arrays.asList()?for循环一样?谢谢!
我正在尝试使用任意长度的String []并将其打印到String,最好使用字段分隔符.现在我有:
String[] start = {"first", "second", "third"}; //[] to convert
String cC = "";
String finish = ""; // Final String
String cC1 = "";
{
for (int i = 0; i < puts.length; i++) {
cC = puts[i] + ", ";
cC1 = (finish + cC);
finish = cC1;
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,它只返回"第二"值.如何使其正确连接值?
另外,我可以通过使用简化代码finish += cC吗?谢谢.