Java 字符串数组到字符串

今天我们将研究如何将 Java String 数组转换为 String. 有时我们需要为特定要求将 String 数组转换为 String. 例如;我们想要记录数组的内容,或者我们需要将 String 数组的值转换为 String,并调用其他方法。

Java String Array 以 String 为代码

大多数时候,我们会召唤一个对象的 toString() 方法来获得 String 表示. 让我们看看当我们在 java 中的 String 数组上召唤 toString() 方法时会发生什么。

 1package com.journaldev.util;
 2
 3public class JavaStringArrayToString {
 4
 5    public static void main(String[] args) {
 6    	String[] strArr = new String[] {"1","2","3"};
 7    	
 8    	String str = strArr.toString();
 9    	
10    	System.out.println("Java String array to String = "+str);
11    }
12
13}

Below image shows the output produced by the above program. java string array to string toString method call output The reason for the above output is because toString() call on the array is going to Object superclass where it's implemented as below.

1public String toString() {
2        return getClass().getName() + "@" + Integer.toHexString(hashCode());
3    }

Java String Array 到 String 示例

我们可以使用 Arrays.toString 方法,在单个元素上调用 toString() 方法,并使用 StringBuilder创建 String。

 1public static String toString(Object[] a) {
 2    if (a == null)
 3        return "null";
 4
 5    int iMax = a.length - 1;
 6    if (iMax == -1)
 7        return "[]";
 8
 9    StringBuilder b = new StringBuilder();
10    b.append('[');
11    for (int i = 0; ; i++) {
12        b.append(String.valueOf(a[i]));
13        if (i == iMax)
14            return b.append(']').toString();
15        b.append(", ");
16    }
17}

我们也可以创建自己的方法来将 String 数组转换为 String,如果我们有某些特定格式要求。

 1package com.journaldev.util;
 2
 3import java.util.Arrays;
 4
 5public class JavaStringArrayToString {
 6
 7    public static void main(String[] args) {
 8    	String[] strArr = new String[] { "1", "2", "3" };
 9
10    	String str = Arrays.toString(strArr);
11    	System.out.println("Java String array to String = " + str);
12
13    	str = convertStringArrayToString(strArr, ",");
14    	System.out.println("Convert Java String array to String = " + str);
15
16    }
17
18    private static String convertStringArrayToString(String[] strArr, String delimiter) {
19    	StringBuilder sb = new StringBuilder();
20    	for (String str : strArr)
21    		sb.append(str).append(delimiter);
22    	return sb.substring(0, sb.length() - 1);
23    }
24}

convert string array to string in java So if we use array toString() method, it returns useless data. Java Arrays class provide toString(Object[] objArr) that iterates over the elements of the array and use their toString() implementation to return the String representation of the array. That's why when we use this function, we can see that it's printing the array contents and it can be used for logging purposes. If you want to combine all the String elements in the String array with some specific delimiter, then you can use convertStringArrayToString(String[] strArr, String delimiter) method that returns the String after combining them.

Java Array 到 String 示例

现在让我们将我们的 String 数组扩展到 String 示例,用于任何其他自定义类,这里是实现。

 1package com.journaldev.util;
 2
 3import java.util.Arrays;
 4
 5public class JavaArrayToString {
 6
 7    public static void main(String[] args) {
 8    	A[] arr = { new A("1"), new A("2"), new A("3") };
 9
10    	// default toString() method
11    	System.out.println(arr.toString());
12
13    	// using Arrays.toString() for printing object array contents
14    	System.out.println(Arrays.toString(arr));
15
16    	// converting Object Array to String
17    	System.out.println(convertObjectArrayToString(arr, ","));
18    }
19
20    private static String convertObjectArrayToString(Object[] arr, String delimiter) {
21    	StringBuilder sb = new StringBuilder();
22    	for (Object obj : arr)
23    		sb.append(obj.toString()).append(delimiter);
24    	return sb.substring(0, sb.length() - 1);
25
26    }
27
28}
29
30class A {
31    private String name;
32
33    public A(String name) {
34    	this.name = name;
35    }
36
37    @Override
38    public String toString() {
39    	System.out.println("A toString() method called!!");
40    	return this.name;
41    }
42}

上面的 java 数组到 String 示例程序所产生的输出是;

1[Lcom.journaldev.util.A;@7852e922
2A toString() method called!!
3A toString() method called!!
4A toString() method called!!
5[1, 2, 3]
6A toString() method called!!
7A toString() method called!!
8A toString() method called!!
91,2,3

所以我们研究了如何将Java String数组转换为String,然后将其扩展到使用自定义对象。

您可以从我们的 GitHub 存储库中查找更多的核心 Java 示例。

参考: Java Arrays toString API Doc

Published At
Categories with 技术
Tagged with
comments powered by Disqus