Java 字符串数组转字符串
今天我们将研究如何将 Java 字符串数组转换为字符串。有时我们必须将字符串数组转换为字符串以满足特定要求。例如;我们想要记录数组内容,或者我们需要将字符串数组的值转换为字符串并调用其他方法。
Java 字符串数组转字符串
大多数时候,我们调用toString()
对象的方法来获取字符串表示。让我们看看toString()
在 Java 中调用字符串数组的方法时会发生什么。
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()
对数组的调用将转到 Object 超类,其实现如下。
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(", ");
}
}
如果我们有某些特定的格式要求,我们还可以创建自己的方法将字符串数组转换为字符串。下面是一个简单的程序,展示了这些方法的运行和产生的输出。
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 元素与某些特定分隔符组合在一起,那么您可以使用convertStringArrayToString(String[] strArr, String delimiter)
在组合它们后返回 String 的方法。
Java 数组转字符串示例
现在让我们将 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") };
// default toString() method
System.out.println(arr.toString());
// using Arrays.toString() for printing object array contents
System.out.println(Arrays.toString(arr));
// converting Object Array to 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 字符串数组转换为字符串,然后将其扩展以用于自定义对象。这就是将 Java 数组转换为字符串的全部内容。
您可以从我们的GitHub 存储库中查看更多核心 Java 示例。