Как преобразовать char в string java
Перейти к содержимому

Как преобразовать char в string java

  • автор:

Перевод массива char в строку

В первом случае массив символов отображается как надо, а во втором показывает не символы, а байты. Как тогда перевсти массив char ‘ов в строку правильно ?

Отслеживать
задан 22 авг 2016 в 5:07
7,748 17 17 золотых знаков 75 75 серебряных знаков 136 136 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Массив символов ( char[] ), не является строковым классом ( String ).

Для конвертации массива символов в строку, необходимо создать эту строку из массива символов.

String myStr = new String(temp); 

А потом выводить её как обычную строку

System.out.println(myStr); 

UPD от Artem Konovalov

Метод .toString() возвращает представление класса + хэшкод объекта в шестнадцатиричном представлении

return getClass().getName() + «@» + Integer.toHexString(hashCode());

Конвертирование char в string в Java

В Java есть несколько способов преобразования типа char в тип String. Рассмотрим некоторые из них.

1. С помощью метода toString()

Метод toString() принимает тип char и возвращает строковую репрезентацию этого символа.

java char c = 'a'; String s = Character.toString(c); System.out.println(s); // выводит "a" 

2. Через конкатенацию

Можно просто сконкатенировать символ с пустой строкой, чтобы получить его строковую репрезентацию.

java char c = 'a'; String s = "" + c; System.out.println(s); // выводит "a" 

3. С помощью метода valueOf()

Метод valueOf() принимает тип char и возвращает соответствующую строку.

java char c = 'a'; String s = String.valueOf(c); System.out.println(s); // выводит "a" 

4. С помощью массива символов

Можно создать массив символов и передать его в конструктор класса String.

java char[] charArray = ; String s = new String(charArray); System.out.println(s); // выводит "abc" 

В общем случае, для преобразования типа char в тип String можно использовать любой из этих способов. Выбор конкретного подхода зависит от требований к производительности, удобства использования или других факторов.

Как преобразовать Char в строку на Java

Есть несколько способов конвертировать Char в String в Java. Фактически, String сделан из массива символов в Java. Char – это 16-битный или 2-байтовый тип данных без знака.

Мы можем преобразовать строку в символ, используя 2 метода –

Метод 1: Использование метода toString()

public class CharToString_toString < public static void main(String[] args) < //input character variable char myChar = 'g'; //Using toString() method //toString method take character parameter and convert string. String myStr = Character.toString(myChar); //print string value System.out.println("String is: " + myStr); >>

Вывод :

String is: g

Способ 2: использование метода valueOf()

public class CharToString_valueOf < public static void main(String[] args) < char myChar = 'g'; //valueOf method take character parameter and convert string. String myStr = String.valueOf(myChar); ////print string value System.out.println("String is: " + myStr); >>

Вывод :

String is: g

Конвертировать строку в символ

//Convert String to Character using string method package com.guru99; public class StringToChar < public static void main(String[] args) < //input String String myStr = "Guru99"; //find string length using length method. int stringLength =myStr.length(); //for loop start 0 to total length for(int i=0; i < stringLength;i++) < //chatAt method find Position and convert to character. char myChar = myStr.charAt(i); //print string to character System.out.println("Character at "+i+" Position: "+myChar); >> >

Вывод:

Character at 0 Position: G Character at 1 Position: u Character at 2 Position: r Character at 3 Position: u Character at 4 Position: 9 Character at 5 Position: 9

How to convert a char to a String?

Downvoted? Why would I ask such an easy question? Because Google lacks a really obvious search result for this question. By putting this here we’ll change that.

Nov 17, 2011 at 18:40

i completely agree with your opinion. I up voted this to get rid of the negative vote. I firmly believe in making googling topics like this easier for everyone. =)

Nov 17, 2011 at 18:48
Did your research include reading the documentation of the String class?
Nov 17, 2011 at 19:51

@DJClayworth Most SO questions could be answered with RTFM, but that’s not very helpful. Why not let people who find the question upvote it and let things take their course?

May 11, 2013 at 5:58

@PaulBellora Only that StackOverflow has become the first stop for research. If there is a StackOverlfow link in the first 10 Google Results I com here.

Feb 13, 2014 at 19:04

14 Answers 14

You can use Character.toString(char) . Note that this method simply returns a call to String.valueOf(char) , which also works.

As others have noted, string concatenation works as a shortcut as well:

String s = "" + 's'; 

But this compiles down to:

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

which is less efficient because the StringBuilder is backed by a char[] (over-allocated by StringBuilder() to 16 ), only for that array to be defensively copied by the resulting String .

String.valueOf(char) «gets in the back door» by wrapping the char in a single-element array and passing it to the package private constructor String(char[], boolean) , which avoids the array copy.

answered Nov 17, 2011 at 18:38
Paul Bellora Paul Bellora
54.9k 18 18 gold badges 133 133 silver badges 182 182 bronze badges
I think the shortcut compiles down to: new StringBuilder(«»).append(‘s’).toString();
Jul 3, 2015 at 12:05

@BinkanSalaryman using javac 1.8.0_51-b16 and then javap to decompile, I see the constructor/method calls I have in the answer. What are you using?

Jul 24, 2015 at 2:55

I’ve got of the following five six methods to do it.

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

String.valueOf(char[] value) invokes new String(char[] value) , which in turn sets the value char array.

public String(char value[])

On the other hand String.valueOf(char value) invokes the following package private constructor.

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

Source code from String.java in Java 8 source code

Hence String.valueOf(char) seems to be most efficient method, in terms of both memory and speed, for converting char to String .

  1. How to convert primitive char to String in Java
  2. How to convert Char to String in Java with Example

9,642 2 2 gold badges 32 32 silver badges 29 29 bronze badges
answered Mar 26, 2013 at 9:32
4,973 3 3 gold badges 29 29 silver badges 32 32 bronze badges

Below are various ways to convert to char c to String s (in decreasing order of speed and efficiency)

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

answered May 13, 2015 at 15:52
22.2k 4 4 gold badges 42 42 silver badges 28 28 bronze badges
someone tested this?
Apr 21, 2020 at 21:22

Use any of the following:

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

answered Nov 17, 2011 at 18:42
60.1k 15 15 gold badges 133 133 silver badges 127 127 bronze badges

Use the Character.toString() method like so:

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

6,221 4 4 gold badges 29 29 silver badges 45 45 bronze badges
answered Nov 17, 2011 at 18:40
3,003 3 3 gold badges 29 29 silver badges 32 32 bronze badges

As @WarFox stated — there are 6 methods to convert char to string. However, the fastest one would be via concatenation, despite answers above stating that it is String.valueOf . Here is benchmark that proves that:

@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[]); > @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[]); > > 
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 

As you can see, the fastest one would be c + «» or «» + c ;

VM version: JDK 1.8.0_131, VM 25.131-b11 

This performance difference is due to -XX:+OptimizeStringConcat optimization. You can read about it here.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *