Java 字符串數組轉字符串

今天我們將研究如何將Java String陣列轉換為String。有時我們必須根據特定需求將String陣列轉換為String。例如;我們想要記錄陣列內容,或者我們需要將String陣列的值轉換為String並調用其他方法。

Java String陣列轉換為String

大多數情況下,我們調用對象的toString()方法以獲取String表示形式。讓我們看看在Java中對String陣列調用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 String陣列轉換為String示例

所以在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元素與某個特定的分隔符結合在一起,則可以使用convertStringArrayToString(String[] strArr, String delimiter)方法,該方法返回結合後的字符串。

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));

		// 將物件陣列轉換為字串
		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陣列轉換為字串範例程式產生的輸出是:

[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陣列轉換為字串,然後將其擴展以用於自定義對象。 這就是將java陣列轉換為字串的全部。

您可以從我們的GitHub存儲庫中查看更多核心Java範例。

參考:Java Arrays toString API文件

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