我试试这段代码:
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连接String?
答案 0 :(得分:4)
而不是
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
值是结果的一部分(因为它们已经添加到第一个字符串中),但它们不会打印出来(因为它们不是可打印的字符)。