java new String 中有错误吗
is there a bug in java new String
我试试这个代码:
byte[] data = new byte[66000];
int count = is.read(data);
String sRequest = new String(data); //will received byte array hello
String all = sRequest;
all = all.concat("world");
System.out.println(all);
它只打印到我的控制台:你好
concat java 函数有bug?我还使用 + 运算符代替 concat 函数,但结果相同:(
我如何将一个字符串与字节数组中的新字符串连接起来?
而不是
String sRequest = new String(data); //will received byte array hello
使用
String sRequest = new String(data, 0, count); //will received byte array hello
当你额外打印结果字符串的长度时,你会注意到不同之处:
System.err.println(all + "/" + all.length());
在第一种情况下给出 helloworld/66005
,在第二种情况下给出 helloworld/10
。您只看到 "hello" 的原因可能是您的控制台问题 - 在 Eclipse 中,我确实看到 "helloworld" 但是当我将其复制并粘贴到另一个编辑器中时,只使用了一个单词。来自初始数组的 0
值是结果的一部分(因为它们已经被添加到第一个字符串),但它们没有被打印出来(因为它们不是可打印字符)。
我试试这个代码:
byte[] data = new byte[66000];
int count = is.read(data);
String sRequest = new String(data); //will received byte array hello
String all = sRequest;
all = all.concat("world");
System.out.println(all);
它只打印到我的控制台:你好
concat java 函数有bug?我还使用 + 运算符代替 concat 函数,但结果相同:( 我如何将一个字符串与字节数组中的新字符串连接起来?
而不是
String sRequest = new String(data); //will received byte array hello
使用
String sRequest = new String(data, 0, count); //will received byte array hello
当你额外打印结果字符串的长度时,你会注意到不同之处:
System.err.println(all + "/" + all.length());
在第一种情况下给出 helloworld/66005
,在第二种情况下给出 helloworld/10
。您只看到 "hello" 的原因可能是您的控制台问题 - 在 Eclipse 中,我确实看到 "helloworld" 但是当我将其复制并粘贴到另一个编辑器中时,只使用了一个单词。来自初始数组的 0
值是结果的一部分(因为它们已经被添加到第一个字符串),但它们没有被打印出来(因为它们不是可打印字符)。