在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 通過ObjectOutputStream得到二進(jìn)制和String的getByte

通過ObjectOutputStream得到二進(jìn)制和String的getBytes()函數(shù)有什么區(qū)別?

對于下面的代碼:
圖片描述
經(jīng)試驗,方法一比方法二多出7個字節(jié),這是因為什么呢?
本人自己查找相關(guān)資料如下:
(1)https://stackoverflow.com/que...
(2)https://docs.oracle.com/javas...
(3)https://en.wikipedia.org/wiki...
但是并沒有真正看懂原理,因為我覺得如果是因為字符編碼的原因,那tes的二進(jìn)制應(yīng)該和ASCII保持一致的吧,看上面資料,英文字母都在ascii表里面,而utf-8和modified utf-8都是和ascii兼容的,所以,字節(jié)數(shù)為什么不一樣呢?

回答
編輯回答
遺莣

java的對象序列化是特殊處理的.
你可以嘗試把一個list序列化后再還原.
但你無法直接得到list的字節(jié)數(shù)組.

2017年7月9日 22:47
編輯回答
硬扛

objectoutputstream寫的對象是要求被序列化的,那么序列化的對象會有一些元數(shù)據(jù)

2018年1月26日 17:20
編輯回答
執(zhí)念

ObjectOutputStream是用來處理序列化的,寫入字符串的的時候肯定不只是寫入字符串的內(nèi)容,還有一些元數(shù)據(jù)。
看源代碼

        //ObjectOutputStream
        bout.writeShort(STREAM_MAGIC);
        bout.writeShort(STREAM_VERSION);
        bout.writeByte(TC_STRING);
        writeShort((int) utflen); 

2+2+1+2剛好是7個字節(jié),具體見源代碼

2018年3月25日 23:49
編輯回答
哎呦喂

其實就是字符編碼的原因。有些字節(jié)的組合是無法對應(yīng)字符的(哪怕UTF-8也是),Java會把它們對應(yīng)成?,再編碼成字節(jié)就會有缺失。

2017年8月19日 21:46