为什么list.toArray()在将ArrayList转换为String []时是一个对象?

时间:2015-10-05 19:45:04

标签: java arrays string arraylist

要明确说明这不是这些问题Convert ArrayList to StringConvert ArrayList containing strings的重复,但它与他们有关。 假设我们有一个从ArrayListString []的转换方法,如我所提到的第一个链接的答案所述:

List<String> stockList = new ArrayList<String>();
stockList.add("stock1");
stockList.add("stock2");

String[] stockArr = new String[stockList.size()];
stockArr = stockList.toArray(stockArr);

for(String s : stockArr)
   System.out.println(s); 

使用print语句,我的输出将如下所示:

stock1
stock2

但是,如果我希望我的输出采用数组格式(如[stock1,stock2])并且我将转换排除在String,即for循环结束,那该怎么办呢?

如果我打印出String[]它会给我一个像[Ljava.lang.String;@5636bc0a这样的垃圾值。我想这可能是因为jvm返回toArray作为对象的问题。

为什么会这样,为此做什么工作?

我需要String []给我一个有意义的价值。我需要这种格式,因为我使用此转换在我的项目中调用JAX-WS函数,该函数只接受String[]值:

myJaxWSObj.setValue(String[] myArrayOfStrings);

修改

感谢您的回答,但有些人一定误解了这个问题。我想将ArrayList转换为String []而不是String。所以做任何类型的.toString()都不会对我有多大帮助,因为正如我上面提到的,我需要调用一个只接受String[]值的JAX-WS类。所以问题不在System.out.println()

假设我进行.toString()转换,我需要通过String[]之类的操作将其转换回stockArr.split("")。我想知道是否还有其他工作要做。

编辑2

这与打印数组无关,它与将List转换为字符串数组有关。

2 个答案:

答案 0 :(得分:0)

数组是对象。使用System.out.println()打印它们将调用默认的Object#toString()方法,该方法返回具有哈希码值的对象类名称。要打印数组的字符串表示形式,请使用Arrays.toString(Object[])

  

返回指定数组内容的字符串表示形式。如果数组包含其他数组作为元素,则它们将从继承自Object的Object.toString()方法转换为字符串,该方法描述其身份而不是其内容。

答案 1 :(得分:0)

有一个有用的库函数Arrays.toString(arr)

String[] arr = { "a", "b" };
System.out.println(Arrays.toString(arr));
//Output: [a, b]