課程
/后端開發
/Java
/文件傳輸基礎——Java IO流
疑問:2個int 占8字節。一個long加一個double是16字節,,utf-8兩個占6字節,兩個utf-16be占4字節, 共計占用34個字節,,但是打印輸出36字節,求解
2014-11-02
源自:文件傳輸基礎——Java IO流 4-4
正在回答
樓上的回答不正確,正確的答案:
int是4個字節,long和double都是8個字節。
writeChars方法采用UTF16編碼,一個漢字是2個字節。
writeUTF方法采用UTF8編碼,一個漢字是3個字節。
所以計算出34個字節,那么多余的2個字節是從哪里來的呢?
告訴你,是從WriteUTF方法得來的2個字節。請看API:
void writeUTF(String?s)?throws IOException將表示長度信息的兩個字節寫入輸出流,后跟字符串 s 中每個字符的 UTF-8 修改版表示形式。如果 s 為 null,則拋出 NullPointerException。根據字符的值,將字符串 s 中每個字符轉換成一個字節、兩個字節或三個字節的字節組。
看到了吧,先寫入表示字符串長度的兩個字節后,再開始寫入字符串。所以是36個字節。
dos.writeLong(10l),貌似l占用了兩個字節,可以試試
舉報
為您介紹IO流的使用,以及對象的序列化和反序列化的內容
4 回答
2 回答
1 回答
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-01-14
樓上的回答不正確,正確的答案:
int是4個字節,long和double都是8個字節。
writeChars方法采用UTF16編碼,一個漢字是2個字節。
writeUTF方法采用UTF8編碼,一個漢字是3個字節。
所以計算出34個字節,那么多余的2個字節是從哪里來的呢?
告訴你,是從WriteUTF方法得來的2個字節。請看API:
void writeUTF(String?s)?throws IOException
將表示長度信息的兩個字節寫入輸出流,后跟字符串 s 中每個字符的 UTF-8 修改版表示形式。如果 s 為 null,則拋出 NullPointerException。根據字符的值,將字符串 s 中每個字符轉換成一個字節、兩個字節或三個字節的字節組。
看到了吧,先寫入表示字符串長度的兩個字節后,再開始寫入字符串。所以是36個字節。
2014-11-05
dos.writeLong(10l),貌似l占用了兩個字節,可以試試