java的流对象和一些方法
方法public StringBuilder reverse()
,用于將字符序列逆序,仍然返回自身對象。 方法public String toString(),返回此序列中數據的字符串表示形式。
String一經初始化,就不會再改變其內容了。對String字符串的操作實際上是對其副本(原始拷貝)的操作,原來的字符串一點都沒有改變。例如String s ="a"創建了一個字符串,s= s+“b"實際上將原來的"a"字符串對象丟棄,現在又產生了另一個字符串s+“b”(也就是"ab”)。如果多次執行這些改變串內容的操作,會導致大量副本字符串對象存留在內存中,降低效率。如果將這樣的操作放到循環中,會極大地影響程序的時間和空間性能,甚至會造成服務器的崩潰。
相反,StringBuilder和StringBuffer類是對原字符串本身操作的,可以對字符串進行修改而不產生副本或者產生少量的副本,因此可以在循環中使用。
為了減少對硬盤的讀寫次數,提高效率,通常設置緩存數組。相應地,讀取時使用的方法為read(byte[ ] b);寫入時的方法為write(byte[ ] b, int off, int length)。
緩沖字節流
BufferedInputStream和BufferedOutputStream這兩個流是緩沖字節流,通過內部緩存數組來提高操作流的效率。在關閉流時,應該先關閉最外層的包裝流,即“后開啟的先關閉”。 緩存區的默認大小是8192字節,也可以使用其他的構造器來指定大小。
readLine()方法是BufferedReader特有的方法,可以對文本文件進行更加方便的讀取操作。 寫入一行后要記得使用newLine()方法換行。
數據流
數據流將“基本數據類型與字符串類型”作為數據源,從而允許程序以與機器無關的方式從底層輸入/輸出流中操作Java基本數據類型與字符串類型。 DataInputStream和DataOutputStream提供了可以存取與機器無關的所有Java基礎類型數據(如:int、double、String等)的方法。 DataInputStream和DataOutputStream是處理流,可以對其他節點流或處理流進行包裝,增加一些更靈活、更高效的功能。。如果要對某個對象進行讀寫操作,需要學習一對新的處理流:ObjectInputStream和ObjectOutputStream。使用對象流讀寫對象時,該對象必須經過序列化與反序列化.
序列化和反序列化是什么
當兩個進程進行遠程通信時,可能會發送各種類型的數據,無論是何種類型的數據,都是以二進制序列的形式在網絡上傳送。例如,可以通過HTTP協議發送字符串信息,也可以在網絡上直接發送Java對象。發送方需要把這個Java對象轉換為字節序列才能在網絡上傳送,接收方則需要把字節序列再恢復為Java對象才能正常讀取。將Java對象轉換為字節序列的過程稱為對象的序列化。將字節序列恢復為Java對象的過程稱為對象的反序列化。對象序列化的作用如下。 持久化:把對象的字節序列永久地保存到硬盤上,通常存放在一個文件中,例如休眠的實現、服務器session的持久化、hibernate持久化對象等。 網絡通信:在網絡上傳送對象的字節序列,例如服務器之間的數據通信、對象傳遞等。
ObjectInputStream代表對象輸入流,它的readObject()方法可以從一個源輸入流中讀取字節序列,再將其反序列化為一個對象并返回。
只有實現了Serializable接口的類的對象才能被序列化。Serializable接口是一個空接口,只起標記作用。
總結
以上是生活随笔為你收集整理的java的流对象和一些方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 易混淆的c++知识点
- 下一篇: 【算法】图(一)拓扑排序的实现 图的邻接