veces varias una repetir palabra mensaje manejo imprimir funciones definir definicion como caracter cadenas cadena java string char type-conversion

varias - manejo de cadenas en java



¿Cómo convertir un char en una cadena? (11)

Tengo un char y necesito una String . ¿Cómo me convierto de uno a otro?


A continuación se muestran varias formas de convertir de char c a String s (en orden decreciente de velocidad y eficiencia)

char c = ''a''; String s = String.valueOf(c); // fastest + memory efficient String s = Character.toString(c); String s = new String(new char[]{c}); String s = String.valueOf(new char[]{c}); String s = new Character(c).toString(); String s = "" + c; // slowest + memory inefficient


Aquí hay algunos métodos, sin ningún orden en particular:

char c = ''c''; String s = Character.toString(c); // Most efficient way s = new Character(c).toString(); // Same as above except new Character objects needs to be garbage-collected s = c + ""; // Least efficient and most memory-inefficient, but common amongst beginners because of its simplicity s = String.valueOf(c); // Also quite common s = String.format("%c", c); // Not common Formatter formatter = new Formatter(); s = formatter.format("%c", c).toString(); // Same as above formatter.close();


Buena pregunta. Tengo de los siguientes 5 6 métodos para hacerlo.

1. String stringValueOf = String.valueOf(''c''); // most efficient 2. String stringValueOfCharArray = String.valueOf(new char[]{x}); 3. String characterToString = Character.toString(''c''); 4. String characterObjectToString = new Character(''c'').toString(); // Although this method seems very simple, // this is less efficient because the concatenation // expands to new StringBuilder().append(x).append("").toString(); 5. String concatBlankString = ''c'' + ""; 6. String fromCharArray = new String(new char[]{x});

Nota: Character.toString(char) devuelve String.valueOf(char) . Así que efectivamente ambos son iguales.

String.valueOf(char[] value) invoca a la new String(char[] value) , que a su vez establece el value char array.

public String(char value[]) { this.value = Arrays.copyOf(value, value.length); }

Por otro lado, String.valueOf(char value) invoca el siguiente constructor privado de paquetes.

String(char[] value, boolean share) { // assert share : "unshared not supported"; this.value = value; }

Código fuente de String.java en código fuente de Java 8

Por String.valueOf(char) tanto, String.valueOf(char) parece ser el método más eficiente, tanto en términos de memoria como de velocidad, para convertir char en String .

  1. Cómo convertir caracteres primitivos a String en Java
  2. Cómo convertir Char a String en Java con Ejemplo

Como lo dijo @WarFox, hay 6 métodos para convertir caracteres en cadenas. Sin embargo, la más rápida sería a través de la concatenación, a pesar de que las respuestas anteriores indican que es String.valueOf . Aquí está el punto de referencia que demuestra que:

@BenchmarkMode(Mode.Throughput) @Fork(1) @State(Scope.Thread) @Warmup(iterations = 10, time = 1, batchSize = 1000, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 10, time = 1, batchSize = 1000, timeUnit = TimeUnit.SECONDS) public class CharToStringConversion { private char c = ''c''; @Benchmark public String stringValueOf() { return String.valueOf(c); } @Benchmark public String stringValueOfCharArray() { return String.valueOf(new char[]{c}); } @Benchmark public String characterToString() { return Character.toString(c); } @Benchmark public String characterObjectToString() { return new Character(c).toString(); } @Benchmark public String concatBlankStringPre() { return c + ""; } @Benchmark public String concatBlankStringPost() { return "" + c; } @Benchmark public String fromCharArray() { return new String(new char[]{c}); } }

Y el resultado:

Benchmark Mode Cnt Score Error Units CharToStringConversion.characterObjectToString thrpt 10 82132.021 ± 6841.497 ops/s CharToStringConversion.characterToString thrpt 10 118232.069 ± 8242.847 ops/s CharToStringConversion.concatBlankStringPost thrpt 10 136960.733 ± 9779.938 ops/s CharToStringConversion.concatBlankStringPre thrpt 10 137244.446 ± 9113.373 ops/s CharToStringConversion.fromCharArray thrpt 10 85464.842 ± 3127.211 ops/s CharToStringConversion.stringValueOf thrpt 10 119281.976 ± 7053.832 ops/s CharToStringConversion.stringValueOfCharArray thrpt 10 86563.837 ± 6436.527 ops/s

Como puede ver, el más rápido sería c + "" o "" + c ;

VM version: JDK 1.8.0_131, VM 25.131-b11

Esta diferencia de rendimiento se debe a la -XX:+OptimizeStringConcat . Puedes leer sobre esto here .


He intentado las sugerencias pero terminé implementándolas como sigue

editView.setFilters(new InputFilter[]{new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { String prefix = "http://"; //make sure our prefix is visible String destination = dest.toString(); //Check If we already have our prefix - make sure it doesn''t //get deleted if (destination.startsWith(prefix) && (dstart <= prefix.length() - 1)) { //Yep - our prefix gets modified - try preventing it. int newEnd = (dend >= prefix.length()) ? dend : prefix.length(); SpannableStringBuilder builder = new SpannableStringBuilder( destination.substring(dstart, newEnd)); builder.append(source); if (source instanceof Spanned) { TextUtils.copySpansFrom( (Spanned) source, 0, source.length(), null, builder, newEnd); } return builder; } else { //Accept original replacement (by returning null) return null; } } }});


Pruebe esto: Character.toString(aChar) o simplemente esto: aChar + ""


Puedes usar Character.toString(char) . Tenga en cuenta que este método simplemente devuelve una llamada a String.valueOf(char) , que también funciona.

Como han dicho otros, la concatenación de cadenas también funciona como un acceso directo:

String s = "" + ''s'';

Pero esto compila a:

String s = new StringBuilder().append("").append(''s'').toString();

lo cual es menos eficiente porque el StringBuilder está respaldado por un char[] (sobre asignado por StringBuilder() a 16 ), solo para que la String sea ​​copiada defensivamente por la String resultante.

String.valueOf(char) "entra por la puerta trasera" envolviendo el char en una matriz de un solo elemento y pasándolo al constructor privado del paquete String(char[], boolean) , que evita la copia de la matriz.


Tenemos varias formas de convertir un char en String . Una forma es hacer uso del método estático toString() en la clase de Character :

char ch = ''I''; String str1 = Character.toString(ch);

En realidad, este método toString hace uso interno del método valueOf de String clase String , que utiliza la matriz char:

public static String toString(char c) { return String.valueOf(c); }

Así que la segunda forma es usar esto directamente:

String str2 = String.valueOf(ch);

Este método valueOf en String clase String hace uso de la matriz char:

public static String valueOf(char c) { char data[] = {c}; return new String(data, true); }

Así que la tercera forma es hacer uso de una matriz anónima para envolver un solo carácter y luego pasarlo al constructor de String :

String str4 = new String(new char[]{ch});

La cuarta forma es hacer uso de la concatenación:

String str3 = "" + ch;

Esto hará uso del método de StringBuilder clase StringBuilder , que es el preferido cuando hacemos concatenación en un bucle.


Utilice cualquiera de los siguientes:

String str = String.valueOf(''c''); String str = Character.toString(''c''); String str = ''c'' + "";


Utilice el método Character.toString() así:

char mChar = ''l''; String s = Character.toString(mChar);


Estoy convirtiendo Char Array a String

Char[] CharArray={ ''A'', ''B'', ''C''}; String text = String.copyValueOf(CharArray);