Eu tenho uma matriz de caracteres:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Minha solução atual é fazer
String b = new String(a);
Mas certamente há uma maneira melhor de fazer isso?
Eu tenho uma matriz de caracteres:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Minha solução atual é fazer
String b = new String(a);
Mas certamente há uma maneira melhor de fazer isso?
Respostas:
Não, essa solução é absolutamente correta e muito mínima.
Observe, no entanto, que esta é uma situação muito incomum: como String
é tratado especialmente em Java, mesmo "foo"
é na verdade um String
. Portanto, a necessidade de dividir uma String em char
s individuais e juntá-las novamente não é necessária no código normal.
Compare isso com o C / C ++, onde "foo"
você tem um pacote de char
s terminado por um byte zero de um lado e string
do outro lado e muitas conversões entre eles devido a métodos legados.
String text = String.copyValueOf(data);
ou
String text = String.valueOf(data);
é sem dúvida melhor (encapsula a new String
chamada).
String(char[])
ou uma variante disso. E a parte da cópia é feita dentro String(char[])
. Isso não deixa nenhum benefício para uma chamada direta, além da simetria com os outros valueOf
métodos.
String
seja alterada e / ou aprimorada de maneira incompatível ou que várias implementações concorrentes possam ser escolhidas em tempo de execução, um método estático de fábrica faz sentido. Isso não acontecerá com um nível tão baixo como String
. Portanto, minha premissa é: Use o menor martelo adequado, não o maior disponível.
CharSequence
interface mostra o quão falho é o seu "não acontecerá com coisas de baixo nível como string" - eles não mudam o que acontece na string porque se ligaram a ela desde o início e agora desejam eles não teriam.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Agora, para converter a matriz de caracteres em String, existem duas maneiras.
Arrays.toString(c);
Retorna a string [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
.
E:
String.valueOf(c)
Retorna a string wwwwww3333dfevvv
.
Em resumo : preste atenção Arrays.toString(c)
, porque você receberá em "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
vez de "wwwwww3333dfevvv"
.
Uma String em java é apenas um objeto em torno de uma matriz de caracteres. Portanto, um
char[]
é idêntico a uma String sem caixa com os mesmos caracteres. Criando uma nova String a partir de sua matriz de caracteres
new String(char[])
você está basicamente dizendo ao compilador para autobox um objeto String em torno de sua matriz de caracteres.
Você pode usar o String.valueOf
método
Por exemplo,
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);
Para saber mais sobre o array de caracteres para string, consulte os links abaixo
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
Convertendo qualquer tipo de matriz em String usando a função Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Tente isto
Arrays.toString(array)
Basta usar String.value como abaixo;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
Você também pode usar a classe StringBuilder
String b = new StringBuilder(a).toString();
O uso de String ou StringBuilder varia de acordo com os requisitos do seu método.
Uma maneira alternativa é fazer:
String b = a + "";
toString
funciona corretamente char[]
. Pode funcionar em alguns fornecedores e versões específicos da JVM.
a
e criação de outro objeto String que concatena com a.toString()
e""