亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

疑問:2個int 占8字節。一個long加一個double是16字節,,utf-8兩個占6字節,兩個utf-16be占4字節, 共計占用34個字節,,但是打印輸出36字節,求解

正在回答

2 回答

樓上的回答不正確,正確的答案:

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個字節。

4 回復 有任何疑惑可以回復我~

dos.writeLong(10l),貌似l占用了兩個字節,可以試試

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
文件傳輸基礎——Java IO流
  • 參與學習       133821    人
  • 解答問題       1060    個

為您介紹IO流的使用,以及對象的序列化和反序列化的內容

進入課程
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號