最近在看马士兵老师的java基础,查看api时看到'ByteArrayOutputStream'的方法,`toString()`方法,当时认为就是把写入ByteArrayOutputStream的字节数据转换为字符串,当时还觉得这个方法很爽,随便往ByteArrayOutputStream里面写数据,在调用这个方法,就会把写入的数据转换成字符串返回,当时就在电脑上写了个例子程序试试,代码如下:
import java.io.*
public class TestByteArray{
public static void main(String[] args)
ByteArrayOutputStream baos =
new ByteArrayOutputStream();
DataOutputStream dos=
new DataOutputStream(baos);
try{
dos.writeBoolean(true);
dos.writeInt(3456);
dos.writeFloat(1.345f)
dos.writeChars("sdjfkl");
byte[] bArray = baos.toByteArray();
for(byte b : bArray){
System.out.print(b + " ");
}
}
}
}
想当然的以为会把写入的那些数据自动转换为字符串输出,但是,实际输出却是:
一串乱码,后来又去查看api,仔细看了下,说这个方法如果不指定传入的字符解码方式,它会以jdk默认的解码字符集解码。而我的系统并没有这种字符(笔者的是Ubuntu15.10),所以造成了乱码的出现。
当然,这个方法现在已经被弃用了。
之所以还写这篇博文,一是第一次使用Markdown写博文,想熟悉下语法,二是提醒自己以后要注意认真看语法。不要又在一些弃用的方法里折腾。(个人觉得,既然这个方法jdk都启弃用了,那么这个方法相对就不是很好,不值得特别关注。)