ฉันมีอาร์เรย์ถ่าน:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
ทางออกปัจจุบันของฉันคือการทำ
String b = new String(a);
แต่แน่นอนว่ามีวิธีที่ดีกว่าในการทำเช่นนี้?
ฉันมีอาร์เรย์ถ่าน:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
ทางออกปัจจุบันของฉันคือการทำ
String b = new String(a);
แต่แน่นอนว่ามีวิธีที่ดีกว่าในการทำเช่นนี้?
คำตอบ:
ไม่ทางออกนั้นถูกต้องและน้อยมาก
แต่ทราบว่านี่เป็นสถานการณ์ที่ผิดปกติอย่างมากเพราะString
มีการจัดการเป็นพิเศษใน Java แม้เป็นจริง"foo"
String
ดังนั้นความต้องการในการแยกสตริงออกเป็นส่วนบุคคลchar
และเข้าร่วมกลับไม่จำเป็นต้องใช้ในรหัสปกติ
เปรียบเทียบสิ่งนี้กับ C / C ++ ที่"foo"
คุณมีกลุ่มของchar
s ถูกยกเลิกโดยศูนย์ไบต์ในด้านหนึ่งและstring
อีกด้านหนึ่งและการแปลงจำนวนมากระหว่างพวกเขาเนื่องจากวิธีการดั้งเดิม
String text = String.copyValueOf(data);
หรือ
String text = String.valueOf(data);
เป็นเนื้อหาที่ดีกว่า (สรุปการnew String
โทร)
String(char[])
หรือแตกต่างจากนั้น String(char[])
และเป็นส่วนหนึ่งคัดลอกที่อยู่ภายในทำ ทำให้ไม่ได้รับประโยชน์จากการโทรโดยตรงนอกเหนือจากสมมาตรกับvalueOf
วิธีการอื่น
String
จะมีการเปลี่ยนแปลงและ / หรือปรับปรุงในทางที่ไม่เข้ากันหรือการใช้งานการแข่งขันหลายสามารถเลือกที่รันไทม์แล้วคงโรงงานวิธีทำให้รู้สึก String
นี้จะไม่เกิดขึ้นด้วยเช่นสิ่งที่ระดับต่ำเป็น ดังนั้นหลักฐานของฉันคือ: ใช้ค้อนที่เล็กที่สุดที่เหมาะสมไม่ใช่ค้อนที่มีขนาดใหญ่ที่สุด
CharSequence
อินเทอร์เฟซแสดงให้เห็นว่าข้อบกพร่องของคุณ "จะไม่เกิดขึ้นกับสิ่งที่ระดับต่ำเช่นสตริง" คือ - พวกเขาจะไม่เปลี่ยนสิ่งที่เกิดขึ้นในสตริงเพราะพวกเขาผูกตัวเองไปก่อน พวกเขาจะไม่มี
สิ่งนี้จะแปลงถ่านอาร์เรย์กลับเป็นสตริง:
char[] charArray = {'a', 'b', 'c'};
String str = String.valueOf(charArray);
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
ทีนี้การแปลงอาเรย์ตัวละครเป็น String มีสองวิธี
Arrays.toString(c);
[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
ส่งกลับสตริง
และ:
String.valueOf(c)
wwwwww3333dfevvv
ส่งกลับสตริง
ในการสรุป : ใส่ใจกับArrays.toString(c)
เพราะคุณจะได้รับแทน"[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
"wwwwww3333dfevvv"
String ใน java เป็นเพียงวัตถุรอบ ๆ อาร์เรย์ของตัวอักษร ดังนั้น
char[]
เหมือนกับสตริงที่ไม่มีกล่องซึ่งมีอักขระเหมือนกัน โดยการสร้างสตริงใหม่จากชุดอักขระของคุณ
new String(char[])
คุณกำลังบอกคอมไพเลอร์ให้ autobox วัตถุ String รอบ ๆ ตัวละครของคุณ
คุณสามารถใช้String.valueOf
วิธีการ
ตัวอย่างเช่น,
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);
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ char char to string คุณสามารถอ้างอิงลิงค์ด้านล่าง
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
https://www.flowerbrackets.com/convert-char-array-to-string-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
การแปลง Array type ให้เป็น String โดยใช้ฟังก์ชั่น Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
ลองใช้java.util.Arrays
ดู โมดูลนี้มีวิธีการที่มีประโยชน์มากมายซึ่งสามารถนำมาใช้ที่เกี่ยวข้องกับอาร์เรย์
Arrays.toString(your_array_here[]);
ลองสิ่งนี้
Arrays.toString(array)
เพียงแค่ใช้ String.value เช่นด้านล่าง;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
ลองสิ่งนี้:
CharSequence[] charArray = {"a","b","c"};
for (int i = 0; i < charArray.length; i++){
String str = charArray.toString().join("", charArray[i]);
System.out.print(str);
}
คุณยังสามารถใช้คลาส StringBuilder
String b = new StringBuilder(a).toString();
การใช้ String หรือ StringBuilder จะแตกต่างกันไปตามข้อกำหนดวิธีการของคุณ
1 วิธีอื่นคือ:
String b = a + "";
toString
char[]
มันอาจทำงานกับผู้จำหน่ายเฉพาะและรุ่นของ JVM
a
และสร้างวัตถุ String อื่นที่เชื่อมโยงกับa.toString()
และ""