最近在看馬士兵老師的java基礎,查看api時看到'ByteArrayOutputStream'的方法,`toString()`方法,當時認爲就是把寫入ByteArrayOutputStream的字節數據轉換爲字符串,當時還覺得這個方法很爽,隨便往ByteArrayOutputStream裏面寫數據,在調用這個方法,就會把寫入的數據轉換成字符串返回,當時就在電腦上寫了個例子程序試試,代碼如下:
import java.io.*
public class TestByteArray{
public static void main(String[] args)
ByteArrayOutputStream baos =
new ByteArrayOutputStream();
DataOutputStream dos=
new DataOutputStream(baos);
try{
dos.writeBoolean(true);
dos.writeInt(3456);
dos.writeFloat(1.345f)
dos.writeChars("sdjfkl");
byte[] bArray = baos.toByteArray();
for(byte b : bArray){
System.out.print(b + " ");
}
}
}
}
想當然的以爲會把寫入的那些數據自動轉換爲字符串輸出,但是,實際輸出卻是:
一串亂碼,後來又去查看api,仔細看了下,說這個方法如果不指定傳入的字符解碼方式,它會以jdk默認的解碼字符集解碼。而我的系統並沒有這種字符(筆者的是Ubuntu15.10),所以造成了亂碼的出現。
當然,這個方法現在已經被棄用了。
之所以還寫這篇博文,一是第一次使用Markdown寫博文,想熟悉下語法,二是提醒自己以後要注意認真看語法。不要又在一些棄用的方法裏折騰。(個人覺得,既然這個方法jdk都啓棄用了,那麼這個方法相對就不是很好,不值得特別關注。)