Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符数组转换回字符串?_Java_Arrays_String_Char - Fatal编程技术网

Java 如何将字符数组转换回字符串?

Java 如何将字符数组转换回字符串?,java,arrays,string,char,Java,Arrays,String,Char,我有一个字符数组: char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'}; 我目前的解决办法是 String b = new String(a); 但是肯定有更好的方法可以做到这一点吗?不,这个解决方案是绝对正确的,而且非常简单 但是请注意,这是一种非常不寻常的情况:因为String在Java中是专门处理的,所以即使“foo”实际上也是字符串。因此,在普通代码中,不需要将字符串拆分为单个chars并将它们重新连接

我有一个字符数组:

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
我目前的解决办法是

String b = new String(a);

但是肯定有更好的方法可以做到这一点吗?

不,这个解决方案是绝对正确的,而且非常简单

但是请注意,这是一种非常不寻常的情况:因为
String
在Java中是专门处理的,所以即使
“foo”
实际上也是
字符串。因此,在普通代码中,不需要将字符串拆分为单个
char
s并将它们重新连接起来


将其与C/C++进行比较,C/C++中的“foo”
有一组字符,一端以零字节结尾,另一端以字符串结尾,它们之间的许多转换都是由于遗留方法造成的。

string text=string.copyValueOf(数据)


String text=String.valueOf(数据)


可以说更好(封装了
新字符串调用)。

这将把字符数组转换回字符串:

char[] charArray = {'a', 'b', 'c'};
String str = String.valueOf(charArray);

1另一种方法是:

String b = a + "";

也可以使用StringBuilder类

String b = new StringBuilder(a).toString();

字符串或StringBuilder的使用因方法要求而异。

java中的字符串只是一个字符数组周围的对象。因此

char[]
与具有相同字符的未装箱字符串相同。通过从字符数组中创建新字符串

new String(char[])
实际上,您是在告诉编译器在字符数组周围自动装箱字符串对象。

尝试以下操作:

CharSequence[] charArray = {"a","b","c"};

for (int i = 0; i < charArray.length; i++){
    String str = charArray.toString().join("", charArray[i]);
    System.out.print(str);
}
CharSequence[]charArray={“a”、“b”、“c”};
for(int i=0;i
包naresh.java;
公共类TestDoubleString{
公共静态void main(字符串参数[]){
String str=“abbccddef”;
charchararray[]=str.toCharArray();
int len=字符长度;
对于(inti=0;i试试这个

Arrays.toString(array)

您可以使用
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);
有关字符数组到字符串的更多信息,请参阅下面的链接

String str=“ww 3333dfevv”;
char[]c=str.toCharArray();
现在要将字符数组转换为字符串,有两种方法

Arrays.toString(c);
返回字符串
[w,w,w,w,w,3,3,3,3,d,f,e,v,v,v]

以及:

String.valueOf(c)
返回字符串
ww3333dfevv

 //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
总而言之:注意
数组。toString(c)
,因为你会得到
“[w,w,w,w,w,3,3,3,3,d,f,e,v,v,v]”
而不是
“ww3333dfevv”

使用Java 8流函数将任何给定数组类型转换为字符串

String stringValue = 
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());

只需使用String.value,如下所示

  private static void h() {

        String helloWorld = "helloWorld";
        System.out.println(helloWorld);

        char [] charArr = helloWorld.toCharArray();

        System.out.println(String.valueOf(charArr));
    }

尝试使用
java.util.Arrays
。此模块提供了多种与数组相关的有用方法

Arrays.toString(your_array_here[]);

其中charArray是字符数组,输出是将字符数组转换为字符串。

你为什么认为有更好的方法?别叫我Shirley.)因为我总是把在运行时创建新变量(比如上面的变量)联系在一起,这样会有点过头。比如说,如果我把上面的一行字符数组转换成字符串,并将其转换成for循环,对我来说,这看起来不太对。是的,我是一个完美主义者……如果你有很多这样的人,比如说一个字符数组或字符集合[],那么您可能会将字符数组附加到StringBuffer,但对于此处或此处的字符串,您发布的内容是最有用的。如果您正在寻找避免复制字符[]的方法,那么就没有了。否则您可能会破坏字符串的不变性。“创建新变量”导致零开销。变量是用于引用值的名称,而该名称本身在运行时不会出现在内存中的任何位置(至少在反射相当有限的Java语言中不会出现)。这种“开销”来自于构造新值,考虑到您的问题是“构造此值”。您不能使字符数组神奇地转换为字符串。您可以安排在创建字符串后对原始字符数组进行垃圾收集。这两种方法都调用
String(char[])
或其变体。复制部分在
String(char[])内完成
。这对直接调用没有任何好处,除了与其他
valueOf
方法对称之外。静态和更多OOP是术语的矛盾。任何声明为静态的东西都不是对象或其行为的一部分,因此也不是面向对象的。此外,如果
字符串的实现有可能我将以不兼容的方式进行更改和/或增强,或者可以在运行时选择几个相互竞争的实现,那么静态工厂方法是有意义的。这不会发生在像
String
这样的低级事物上。因此,我的前提是:使用合适的最小锤,而不是可用的最大锤。@a.H.我不知道这一点t、 字符串让位给了StringBuffer,StringBuffer让位给了StringBuilder。我打赌StringBuffer的支持者当时也说过同样的话,现在必须重构代码才能使用StringBuilder。@A.H.他们必须创建
CharSequence
接口这一事实表明,对于像字符串这样的低级东西,你的“代码”不会有多大的缺陷"是-他们不会改变字符串中发生的事情,因为他们很早就将自己绑定到字符串中,现在他们希望他们不会这样做。@corsiKa我没有说,字符串API都是好的和金色的。只是它不会以不兼容的方式改变,类本身及其构造函数不会去任何地方。:-)这是错误的,因为它假设
toString
char[]
上正常工作。它可能在某些特定的供应商和JVM版本上工作。因为String类是不可变的,这将导致执行两个操作:toString()c
Arrays.toString(your_array_here[]);
String output = new String(charArray);