Java字符串数组转换为字符串

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

Java字符串数组转字符串

大多数时候,我们调用对象的toString()方法来获得字符串表示。让我们看看在Java中调用字符串数组上的toString()方法时会发生什么。

package com.journaldev.util;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] {"1","2","3"};
		
		String str = strArr.toString();
		
		System.out.println("Java String array to String = "+str);
	}

}

下面的图像显示了上述程序产生的输出。上述输出的原因是因为对数组调用toString()会到达对象超类,其实现如下。

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

Java字符串数组转字符串示例

所以如何在java中将String数组转换为String。我们可以使用Arrays.toString方法,该方法调用各个元素上的toString()方法,并使用StringBuilder创建String。

public static String toString(Object[] a) {
    if (a == null)
        return "null";

    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}

如果我们有一些特定的格式要求,我们也可以创建自己的方法来将String数组转换为String。下面是一个简单的程序,展示了这些方法的运行和产生的输出。

package com.journaldev.util;

import java.util.Arrays;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] { "1", "2", "3" };

		String str = Arrays.toString(strArr);
		System.out.println("Java String array to String = " + str);

		str = convertStringArrayToString(strArr, ",");
		System.out.println("Convert Java String array to String = " + str);

	}

	private static String convertStringArrayToString(String[] strArr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (String str : strArr)
			sb.append(str).append(delimiter);
		return sb.substring(0, sb.length() - 1);
	}
}

所以如果我们使用数组toString()方法,它返回的数据是无用的。Java Arrays类提供了toString(Object[] objArr),它遍历数组的元素并使用它们的toString()实现来返回数组的String表示。这就是为什么当我们使用这个函数时,我们可以看到它打印了数组的内容,并且它可以用于日志记录的目的。如果您想要使用某个特定的分隔符组合String数组中的所有String元素,那么您可以使用convertStringArrayToString(String[] strArr, String delimiter)方法来将它们组合成String。

Java数组转String示例

现在让我们扩展我们的String数组到String示例,以便与任何其他自定义类一起使用,这是实现。

package com.journaldev.util;

import java.util.Arrays;

public class JavaArrayToString {

	public static void main(String[] args) {
		A[] arr = { new A("1"), new A("2"), new A("3") };

		// 默认toString()方法
		System.out.println(arr.toString());

		// 使用Arrays.toString()打印对象数组内容
		System.out.println(Arrays.toString(arr));

		// 将Object数组转换为String
		System.out.println(convertObjectArrayToString(arr, ","));
	}

	private static String convertObjectArrayToString(Object[] arr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (Object obj : arr)
			sb.append(obj.toString()).append(delimiter);
		return sb.substring(0, sb.length() - 1);

	}

}

class A {
	private String name;

	public A(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		System.out.println("A toString() method called!!");
		return this.name;
	}
}

上述java数组转换为String示例程序产生的输出是:

[Lcom.journaldev.util.A;@7852e922
A toString() method called!!
A toString() method called!!
A toString() method called!!
[1, 2, 3]
A toString() method called!!
A toString() method called!!
A toString() method called!!
1,2,3

所以我们看了如何将Java String数组转换为String,然后扩展到与自定义对象一起使用。这就是将java数组转换为String的全部内容。

您可以从我们的GitHub存储库检出更多的核心Java示例。

参考:Java Arrays toString API文档

Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string