Mar*_*ius 5 java primitive types return-value
我试图通过StringUtils.join(array, separator)Apache commons库中的方法加入数组的元素.任何人都可以解释我为什么我不能得到结果字符串,只有一个指向其位置的指针,如果我使用一个原始类型的数组,如int[]?请参阅下面的示例代码:
public static void main(String[] args){
String[] s = new String[]{"Anna","has", "apples"};
System.out.println(StringUtilities.join(s, " "));
int[] a = new int[]{1,2,3};
System.out.println(StringUtilities.join(a, " "));
Integer[] b = new Integer[]{1,2,3};
System.out.println(StringUtilities.join(b, " "));
}
Run Code Online (Sandbox Code Playgroud)
只使用Integer数组工作.我理解基元的数组内部处理方式与ArrayList或其他更高阶的对象不同,但是为什么有可能(相同的主题或多或少但可能是一个不同的问题)实例化HashMap<String, int[]>没有任何警告,异常?数组内部是否包含在另一个对象中?仅适用于地图?根据我从文档中读到的内容,您无法使用原始类型对地图,集合,数组列表等进行参数化,这是我理解的,但后来......我发现它有点令人困惑.任何合理的解释将不胜感激.谢谢.
看看int数组的签名StringUtils#join:
join(byte[] array, char separator)
Run Code Online (Sandbox Code Playgroud)
你所谓的join用
StringUtils.join(a, " "),
Run Code Online (Sandbox Code Playgroud)
使用String而不是char.尝试使用
StringUtils.join(a, ' ')
Run Code Online (Sandbox Code Playgroud)
代替.
发生的事情是你的电话与另一个签名匹配:
join(T... elements),
Run Code Online (Sandbox Code Playgroud)
所以你的参数被解释为两个对象,一个整数数组和一个带空格字符的String.在创建结果字符串时,该方法将整数数组的字符串表示与字符串连接起来.
| 归档时间: |
|
| 查看次数: |
620 次 |
| 最近记录: |