开发者社区> 问答> 正文

关于java输出流ByteArrayOutputStream的toString()方法

蛮大人123 2016-06-06 14:23:43 1378
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()这个方法的用法是什么?是用来干什么的呢?

Java
分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:28:35

    不是这样用的 , 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();
            }
        }
    }
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题