У мене є масив char:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Моє поточне рішення - це зробити
String b = new String(a);
Але напевно є кращий спосіб зробити це?
У мене є масив char:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Моє поточне рішення - це зробити
String b = new String(a);
Але напевно є кращий спосіб зробити це?
Відповіді:
Ні, це рішення абсолютно правильне і дуже мінімальне.
Однак зауважте, що це дуже незвична ситуація: оскільки String
обробляється спеціально на Java, навіть "foo"
це фактично String
. Отже, необхідність розбиття рядка на окремі char
s та об'єднання їх у звичайному коді не потрібна.
Порівняйте це з 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
інтерфейс, показує, наскільки хибним є ваш "звичай не трапиться з речами на низькому рівні, як рядок" - вони не змінюють того, що відбувається в рядку, тому що вони прив'язали себе до цього рано, і тепер вони хочуть їх не було б.
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"
.
Рядок у Java - це лише предмет навколо масиву символів. Звідси a
char[]
є ідентичним unboxed String з тими ж символами. Створюючи нову рядок зі свого масиву символів
new String(char[])
ви, по суті, говорите компілятору автобоксувати об'єкт 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 до рядка ви можете посилатися нижче
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
Перетворення даного типу масиву в String за допомогою функції Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Спробуйте це
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));
}
Ви також можете використовувати клас StringBuilder
String b = new StringBuilder(a).toString();
Використання String або StringBuilder залежить від ваших вимог до методу.
1 альтернативний спосіб - це зробити:
String b = a + "";
toString
працює правильно char[]
. Це може працювати на деяких конкретних постачальниках та версіях JVM.
a
та створення іншого об'єкта String, який об'єднується з a.toString()
і""