java-stringutils.join()返回指针

mzillmmw  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(342)

我试图通过 StringUtils.join(array, separator) 方法。有没有人能解释一下,如果我使用一个基元类型数组(如 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, " "));
}

仅使用 Integer 阵列工作。我知道基本体数组在内部的处理方式与arraylist或其他高阶对象不同,但是为什么可以示例化一个 HashMap<String, int[]> 没有任何警告,例外?数组是否在内部 Package 在另一个对象中?只为Map?从我从文档中读到的,你不能用原语类型参数化一个Map,集合,数组列表等,我明白,但是。。。我觉得有点困惑。任何合理的解释都将不胜感激。谢谢您。

g6ll5ycj

g6ll5ycj1#

看一下你的签名 int 数组 StringUtils#join :

join(byte[] array, char separator)

你打电话来了 join 使用

StringUtils.join(a, " "),

使用字符串而不是字符。尝试使用

StringUtils.join(a, ' ')

相反。
你的电话与另一个签名匹配:

join(T... elements),

所以你的参数被解释为两个对象,一个整数数组和一个带空格的字符串。在创建结果字符串时,该方法将整数数组的字符串表示形式与字符串连接起来。

bxfogqkk

bxfogqkk2#

int数组(原语)是一个对象。
我怀疑这个实现不支持基本数组和调用 toString() 结果是 [I@659e0bfd (转换为一维(只有一个 [ )数组 I nts及其“内存位置”)。

相关问题