У меня есть массив символов:
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
интерфейс, показывает, насколько ошибочна ваша «не будет происходить с низкоуровневыми вещами, такими как строка» - они не меняют то, что происходит в строке, потому что они привязали себя к этому на раннем этапе, и теперь они хотят они бы не имели.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Теперь преобразовать массив символов в строку можно двумя способами.
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 это просто объект вокруг массива символов. Отсюда
char[]
идентична распакованной строке с теми же символами. Создавая новую строку из вашего массива символов
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);
Подробнее о массиве символов в строке вы можете ссылаться на ссылки ниже
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
Преобразование любого данного типа массива в строку с использованием функции потока Java 8
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()
и""