Tôi có một mảng char:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Giải pháp hiện tại của tôi là làm
String b = new String(a);
Nhưng chắc chắn có một cách tốt hơn để làm điều này?
Tôi có một mảng char:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Giải pháp hiện tại của tôi là làm
String b = new String(a);
Nhưng chắc chắn có một cách tốt hơn để làm điều này?
Câu trả lời:
Không, giải pháp đó là hoàn toàn chính xác và rất tối thiểu.
Tuy nhiên, lưu ý rằng đây là một tình huống rất bất thường: Bởi vì String
được xử lý đặc biệt trong Java, thậm chí "foo"
thực sự là một String
. Vì vậy, nhu cầu tách Chuỗi thành từng char
s và nối lại chúng là không bắt buộc trong mã thông thường.
So sánh điều này với C / C ++ khi "foo"
bạn có một bó char
s bị chấm dứt bởi một byte 0 ở một bên và string
ở phía bên kia và nhiều chuyển đổi giữa chúng do các phương thức kế thừa.
String text = String.copyValueOf(data);
hoặc là
String text = String.valueOf(data);
được cho là tốt hơn (đóng gói new String
cuộc gọi).
String(char[])
hoặc một biến thể của điều đó. Và phần sao chép được thực hiện bên trong String(char[])
. Điều này không có lợi cho một cuộc gọi trực tiếp bên cạnh sự đối xứng với các valueOf
phương thức khác .
String
sẽ được thay đổi và / hoặc tăng cường theo cách không tương thích hoặc một số triển khai cạnh tranh có thể được chọn trong thời gian chạy, thì phương thức tĩnh nhà máy có ý nghĩa. Điều này sẽ không xảy ra với một thứ cấp thấp như vậy String
. Do đó, tiền đề của tôi là: Sử dụng búa nhỏ nhất phù hợp, không phải là búa lớn nhất hiện có.
CharSequence
giao diện cho thấy mức độ "không xảy ra với các công cụ cấp thấp như chuỗi" của bạn - họ không thay đổi những gì diễn ra trong chuỗi vì họ tự gắn mình với nó từ sớm và bây giờ họ muốn họ sẽ không có.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Bây giờ để chuyển đổi mảng ký tự thành Chuỗi, có hai cách.
Arrays.toString(c);
Trả về chuỗi [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
.
Và:
String.valueOf(c)
Trả về chuỗi wwwwww3333dfevvv
.
Tóm lại : chú ý đến Arrays.toString(c)
, bởi vì bạn sẽ nhận được "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
thay vì "wwwwww3333dfevvv"
.
Một chuỗi trong java chỉ là một đối tượng xung quanh một mảng ký tự. Do đó một
char[]
giống hệt với một Chuỗi không có hộp có cùng ký tự. Bằng cách tạo một Chuỗi mới từ mảng ký tự của bạn
new String(char[])
về cơ bản, bạn đang bảo trình biên dịch tự động hộp một đối tượng String xung quanh mảng ký tự của bạn.
Bạn có thể sử dụng String.valueOf
phương pháp.
Ví dụ,
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
String b = String.valueOf(a);
System.out.println("Char Array back to String is: " + b);
Để biết thêm về mảng char thành chuỗi, bạn có thể tham khảo các liên kết dưới đây
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
https://www.flowerbrackets.com/convert-char-array-to-opes-java/
package naresh.java;
public class TestDoubleString {
public static void main(String args[]){
String str="abbcccddef";
char charArray[]=str.toCharArray();
int len=charArray.length;
for(int i=0;i<len;i++){
//if i th one and i+1 th character are same then update the charArray
try{
if(charArray[i]==charArray[i+1]){
charArray[i]='0';
}}
catch(Exception e){
System.out.println("Exception");
}
}//finally printing final character string
for(int k=0;k<charArray.length;k++){
if(charArray[k]!='0'){
System.out.println(charArray[k]);
} }
}
}
//Given Character Array
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
//Converting Character Array to String using String funtion
System.out.println(String.valueOf(a));
//OUTPUT : hello world
Chuyển đổi bất kỳ loại Mảng đã cho nào thành Chuỗi bằng hàm Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Thử cái này
Arrays.toString(array)
Chỉ cần sử dụng String.value như dưới đây;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
Bạn cũng có thể sử dụng lớp StringBuilder
String b = new StringBuilder(a).toString();
Việc sử dụng String hoặc StringBuilder thay đổi theo yêu cầu phương thức của bạn.
1 cách khác là làm:
String b = a + "";
toString
hoạt động chính xác trên char[]
. Nó có thể hoạt động trên một số nhà cung cấp và phiên bản cụ thể của JVM.
a
và tạo một đối tượng Chuỗi khác nối với a.toString()
và""