剛學(xué)java流技術(shù)IO編程時,一下出來這么多流,很是不敏感,不感冒,在學(xué)習(xí)了這段時間,發(fā)現(xiàn)好多項目中的讀寫數(shù)據(jù),輸入輸出用到的都是以前學(xué)的最基本的,但是自己卻不是很理解其根本,今天就說幾個流中簡單但又常用的幾個知識點
Java.io包中定義了多個流類型,來實現(xiàn)輸入輸出功能:
- 按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度來考慮)
- 如:輸入流InputStream Reader 輸出流 OutputStream Writer
- 按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流。
- 如: 字節(jié)流 InputStream OutputStream 字符流 Reader Writer
- 按照功能不同可以分為節(jié)點流和處理流。
通俗的說節(jié)點流就是一個簡單的輸入輸出流,而處理流是“連接”在已存在的字節(jié)流或處理流之上的,通過對數(shù)據(jù)的處理為程序提供更為強大的讀寫功能。
我們最經(jīng)常用到的節(jié)點流類型是有關(guān)文件處理的有FileReader FileWriter FileInputStream FileOutputStream
Ø FileInputSteam 和 FileOutputStream 類支持其父類InputStream 和OutputStream 所提供的數(shù)據(jù)讀寫方法。
Ø 注意:
§ 在實例化FileInputStream和FileOutputSteam流時要用try-catch語句以處理其可能拋出的FileNotFoundException。
§ 在讀寫數(shù)據(jù)時也要用try-catch語句以處理可能拋出的 IOException。
§ FileNotFoundException是IOException的子類
FileReader 和 FileWriter 分別繼承自Reader和Writer,FileInputSteam與FileOutputStream類似,所不同的時FileReader和FileWriter向文件輸入和輸出的數(shù)據(jù)單位為字符。
處理流中常用到的有緩沖流 、轉(zhuǎn)換流。
l 緩沖流有BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream ,緩沖流要“套接”在相應(yīng)的節(jié)點流之上,對讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時增加了一些新的方法
l BufferedReader提供了readLine方法用于讀取一行字符串(以"r或"n分 隔)。
l BufferedWriter提供了newLine用于寫入一個行分隔符。
l 對于輸出的緩沖流,寫出的數(shù)據(jù)會先在內(nèi)存中緩存,使用flush方法將會使內(nèi)存中的數(shù)據(jù)立刻寫出。
在Socket編程中接受信息時,不是直接用InputStream接收,而是把內(nèi)容放入緩沖之中進行讀取 ,在Socket中的簡單應(yīng)用如下


































































































轉(zhuǎn)換流InputStreamReader OutputStreamWriter 用于字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間的轉(zhuǎn)換。其中InputStreamReader 需要和InputStream”套接”,OutputStreamWriter需要和OutputStream套接
數(shù)據(jù)流DataInputStream DataOutputStream 提供了可以存取與機器無關(guān)的java原始數(shù)據(jù)類型
l Print流:PrintWriter和PrintStream都屬于輸出流,分別針對與字符和字節(jié),PrintWriter和PrintStream提供了重載的print,Println方法用于多種數(shù)據(jù)類型的輸出。PrintWriter和PrintStream的輸出操作不會拋出異常,用戶通過檢測錯誤狀態(tài)獲取錯誤信息。PrintWriter和PrintStream有自動flush功能
l
這幾個流的類型都是在以后的學(xué)習(xí)中經(jīng)常用到的。就不一一做例子啦
以后所學(xué)到的所有流類型都是繼承 InputStream OutputStream Reader Writer 這四個抽象的流類型
























用戶名或密碼輸入不正確時:

String s = new String("abc");
首先我們要明白兩個概念,引用變量和對象,對象一般通過new在堆中創(chuàng)建,s只是一個引用變量。
所有的字符串都是String對象,由于字符串文字的大量使用,java中為了節(jié)省時間,在編譯階段,會把字符串文字放在文字池中,文字池的一個好處就是可以把相同的字符串合并,占用一個空間,我們可以用==判斷一下兩個引用變量是否指向了一個地址即一個對象










可以看出指向了一個對象,即文字池中保存了一個對象。
二、String s = new String("abc")實際上是"abc"本身就是文字池中的一個對象,在運行 new String()時,把文字池即pool中的字符串"abc"復(fù)制到堆中,并把這個對象的應(yīng)用交給s,所以創(chuàng)建了兩個String對象,一個在pool中,一個在堆中。下面看這個程序,創(chuàng)建了幾個對象。















可知在堆中創(chuàng)建了兩個對象,但是在文字池中有一個對象,所以共創(chuàng)建了三個對象。
三、再看下一個例子:










String s = new String("abc")并不是給s賦值,而是把字符串"abc"的引用交給s持有,現(xiàn)在把s指向字符串"cba","cba"的引用地址把"abc"的引用地址覆蓋,所以輸出結(jié)果為cba
最后這個輸出結(jié)果的解釋,希望大家指出不足!!
數(shù)據(jù)成員:員工號,姓名,薪水,部門;
方法:
利用構(gòu)造方法完成設(shè)置信息:
A.單參,只傳遞員工號;
B.雙參,只傳遞員工號、姓名;
C.四參,傳遞員工號、姓名、薪水、部門;
D.無參,則均為空值;
main方法中創(chuàng)建兩個對象,分別進行驗證。















































































類是一個抽象的概念,對象則是類的具體實例,是真實的個體,比如人就是一個類,張三、李四等就是一個個真實的
具體的個體對象,人有具備所有人類通用的特征,但不能確定是哪個人,張三、李四等有具體的特征,比如身高性別,即
屬性。類一種看不見摸不著的東西,對象是“有血有肉”的實物。
現(xiàn)實生活中到處皆對象,比如一輛汽車,一棟房子,一臺電腦,一只貓。
面向?qū)ο缶哂蟹庋b、繼承、多態(tài)三大特征。封裝,即使屬性用private修飾對外部不可見;繼承,如人,有老人、小孩
、男人、女人,他們都是人的子類。多態(tài)包括方法的重載和對象的多態(tài)性,方法的重載就是方法名相同,但參數(shù)和類型不
同的方法,多態(tài),即人分為老人,小孩,男人,女人等。
現(xiàn)在用一個小實例來感受一下java的堆棧存取,代碼如下:




















我的名字是:李四年齡 :24
可用畫圖來表示其堆棧的存取:其中李四把張三給覆蓋啦。
修改代碼如下:






















我的名字是:李四年齡 :24
其堆棧存取用畫圖表示如下:其中李四把張三給覆蓋啦
p2先斷開自己原先的堆指向,再指向p1的指向,原先的堆空間被釋放。
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 1 | 2 | 3 | 4 | 5 |
常用鏈接
留言簿(13)
隨筆檔案
文章檔案
搜索
最新評論

- 1.?re: java中構(gòu)造方法和方法全面解析
- 為什么非要調(diào)用父類的構(gòu)造方法
- --zjy
- 2.?re: java-醫(yī)院病人排隊掛號醫(yī)生叫號簡潔小系統(tǒng)
- 代碼不全 QueueServer 沒有
- --sss
- 3.?re: Java中thread類與Runnable接口的區(qū)別
- 受教了
- --李大明
- 4.?re: java中消費者與生產(chǎn)者的問題實例解析
- 樓主有沒有搞錯啊 你的最后那個截圖后面不還是亂的嗎 不是一個一個交替輸出的啊
- --aben
- 5.?re: java堆棧存取實例小講解
-
@閆佳
上面有插入代碼--呵呵--- - --迷人笑笑