import java.io.*;
public class ByteArrayOutputStreamtoString {
public static void main(String[] args){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try{
dos.writeBoolean(true);
dos.writeDouble(2.345456);
dos.writeFloat(1.234354f);
String s = baos.toString();
System.out.println(s);
}catch(IOException e){
e.printStackTrace();
}
}
}
他的輸出為什麼是“@�~oq��?��P”這樣的亂碼?,還有toString()這個方法的用法是什麼?是用來干什麼的呢?
不是這樣用的 , ByteArrayOutputStream 存的是字節數組, toString 只是簡單的把裡面的 byte數組轉成了字符串。程序可不知道你要怎麼解析 byte。
出現亂碼很正常。 下面給你正確的用法
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
* Created by chenhong on 16/3/10.
*/
public class Main {
public static void main(String[] args){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try{
dos.writeBoolean(true); //boolean 1位
dos.writeInt(2); // int 32位 4字節
dos.writeFloat(1.234354f); // float 32位 32字節
byte[] bArray = baos.toByteArray();
System.out.println("共"+bArray.length+"字節");
for (int i = 0; i < bArray.length; ++i){
System.out.println(bArray[i]+" ");
}
}catch(IOException e){
e.printStackTrace();
}
}
}