- NIO與Socket編程技術(shù)指南
- 高洪巖
- 486字
- 2019-01-05 05:42:03
1.2 緩沖區(qū)介紹
在使用傳統(tǒng)的I/O流API時(shí),如InputStream和OutputStream,以及Reader和Writer聯(lián)合使用時(shí),常常把字節(jié)流中的數(shù)據(jù)放入byte[]字節(jié)數(shù)組中,或把字符流中的數(shù)據(jù)放入char[]字符數(shù)組中,也可以從byte[]或char[]數(shù)組中獲取數(shù)據(jù)來(lái)實(shí)現(xiàn)功能上的需求,但由于在Java語(yǔ)言中對(duì)array數(shù)組自身進(jìn)行操作的API非常少,常用的操作僅僅是length屬性和下標(biāo)[x]了,在JDK中也沒(méi)有提供更加方便操作數(shù)組中數(shù)據(jù)的API,如果對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行高級(jí)處理,需要程序員自己寫代碼進(jìn)行實(shí)現(xiàn),處理的方式是比較原始的,這個(gè)問(wèn)題可以使用NIO技術(shù)中的緩沖區(qū)Buffer類來(lái)解決,它提供了很多工具方法,大大提高了程序開(kāi)發(fā)的效率。
Buffer類的聲明信息如圖1-6所示。

圖1-6 Buffer類的聲明信息
從Buffer類的Java文檔中可以發(fā)現(xiàn),Buffer類是一個(gè)抽象類,它具有7個(gè)直接子類,分別是ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer,也就是緩沖區(qū)中存儲(chǔ)的數(shù)據(jù)類型并不像普通I/O流只能存儲(chǔ)byte或char數(shù)據(jù)類型,Buffer類能存儲(chǔ)的數(shù)據(jù)類型是多樣的。
注意
Buffer類沒(méi)有BooleanBuffer這個(gè)子類。
類java.lang.StringBuffer是在lang包下的,而在nio包下并沒(méi)有提供java.nio.StringBuffer緩沖區(qū),在NIO中存儲(chǔ)字符的緩沖區(qū)可以使用CharBuffer類。
NIO中的Buffer是一個(gè)用于存儲(chǔ)基本數(shù)據(jù)類型值的容器,它以類似于數(shù)組有序的方式來(lái)存儲(chǔ)和組織數(shù)據(jù)。每個(gè)基本數(shù)據(jù)類型(除去boolean)都有一個(gè)子類與之對(duì)應(yīng)。
- Practical Data Analysis Cookbook
- VMware View Security Essentials
- Python量化投資指南:基礎(chǔ)、數(shù)據(jù)與實(shí)戰(zhàn)
- Python編程與幾何圖形
- 大模型RAG實(shí)戰(zhàn):RAG原理、應(yīng)用與系統(tǒng)構(gòu)建
- Learning Salesforce Einstein
- HTML 5與CSS 3權(quán)威指南(第3版·上冊(cè))
- Domain-Driven Design in PHP
- Web性能實(shí)戰(zhàn)
- Kubernetes進(jìn)階實(shí)戰(zhàn)
- MATLAB GUI純代碼編寫從入門到實(shí)戰(zhàn)
- 基于JavaScript的WebGIS開(kāi)發(fā)
- 軟技能2:軟件開(kāi)發(fā)者職業(yè)生涯指南
- 軟件再工程:優(yōu)化現(xiàn)有軟件系統(tǒng)的方法與最佳實(shí)踐
- HTML5+CSS+JavaScript深入學(xué)習(xí)實(shí)錄