我从Apache Commons Lang的StringUtils.join得到了奇怪的结果。假设我有:
List<String> values = new LinkedList<>();
values.add("120");
values.add("123456789");
values.add("9000");
values.add("en");
byte[] data = StringUtils.join(values, new char[] {1}).getBytes();
我希望31323001313233343536373839013930303001656e
为120.123456789.9000.en
,.
为0x01
。但令我困惑的是我得到了
而是5b3132302c203132333435363738392c20393030302c20656e5d5b4340333664303437
,转换为[120, 123456789, 9000, en][C@36d047
。在我这样做的方式中是否存在导致奇怪价值的问题?
答案 0 :(得分:1)
您使用以下方法:
public static <T> String join(T... elements)
将提供的数组的元素连接到包含提供的元素列表的单个String中。
未在连接的String中添加分隔符。数组中的空对象或空字符串由空字符串表示。
因此,此方法在字符串列表和char数组上调用toString(),并加入结果。
您希望将char或String分隔符作为第二个参数传递:
StringUtils.join(values, '.').getBytes();