Java基礎(chǔ)之IO流

1.IO流

Java中有幾種類型的流

答:字節(jié)流奴拦,字符流兰怠。字節(jié)流繼承于InputStream畦攘、OutputStream霸妹,字符流繼承于InputStreamReader、OutputStreamWriter知押。在java.io包中還有許多其他的流叹螟,主要是為了提高性能和使用方便。

File類型中定義了什么方法來創(chuàng)建一級目錄台盯?File類型中定義了什么方法來判斷一個文件是否存在罢绽?

答:mkdirs() ,在指定位置創(chuàng)建目錄静盅,這會創(chuàng)建路徑中所有不存在的目錄良价。exists(),文件或文件夾是否存在蒿叠。

為了提高讀寫性能明垢,可以采用什么流?

答:緩沖流(BufferedInputStream市咽、BufferedOutputStream)

對文本文件操作用什么I/O流痊银?

答:FileReader、FileWriter

對各種基本數(shù)據(jù)類型和String類型的讀寫施绎,采用什么流曼验?

答:DataInputStream、DataOutputStream

2.其他

如何實現(xiàn)對象克抡辰鬓照?深拷貝和淺拷貝區(qū)別?

答:那么孤紧,如果一個對象需要被克隆豺裆,那么該如何實現(xiàn)呢?分成如下兩步:

1)實現(xiàn)Cloneable接口

2)復(fù)寫Object類中的clone()方法

如何區(qū)分深拷貝與淺拷貝,簡單點來說臭猜,就是假設(shè)B復(fù)制了A躺酒,當(dāng)修改A時,看B是否會發(fā)生變化蔑歌,如果B也跟著變了羹应,說明這是淺拷貝,拿人手短次屠,如果B沒變园匹,那就是深拷貝,自食其力劫灶。

什么是比特(Bit),什么是字節(jié)(Byte),什么是字符(Char),它們長度是多少,各有什么區(qū)別裸违?

答:1. Bit最小的二進(jìn)制單位 ,是計算機的操作部分 取值0或者1?

2. Byte是計算機操作數(shù)據(jù)的最小單位由8位bit組成 取值(-128-127)?

3. Char是用戶的可讀寫的最小單位本昏,在java里面由16位bit組成 取值(0-65535)

什么是同步IO供汛?什么是異步IO?什么是阻塞IO涌穆?什么是非阻塞IO怔昨?

答:所謂同步,就是在發(fā)出一個功能調(diào)用時宿稀,在沒有得到結(jié)果之前趁舀,該調(diào)用就不返回。也就是必須一件一件事做,等前一件做完了才能做下一件事原叮。

例如普通B/S模式(同步):提交請求->等待服務(wù)器處理->處理完畢返回?這個期間客戶端瀏覽器不能干任何事

異步的概念和同步相對。當(dāng)一個異步過程調(diào)用發(fā)出后巡蘸,調(diào)用者不能立刻得到結(jié)果奋隶。實際處理這個調(diào)用的部件在完成后,通過狀態(tài)悦荒、通知和回調(diào)來通知調(diào)用者唯欣。

例如 ajax請求(異步):?請求通過事件觸發(fā)->服務(wù)器處理(這是瀏覽器仍然可以作其他事情)->處理完畢

阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當(dāng)前線程會被掛起(線程進(jìn)入非可執(zhí)行狀態(tài)搬味,在這個狀態(tài)下境氢,cpu不會給線程分配時間片,即線程暫停運行)碰纬。函數(shù)只有在得到結(jié)果之后才會返回萍聊。

有人也許會把阻塞調(diào)用和同步調(diào)用等同起來,實際上他是不同的悦析。對于同步調(diào)用來說寿桨,很多時候當(dāng)前線程還是激活的,只是從邏輯上當(dāng)前函數(shù)沒有返回,它還會搶占cpu去執(zhí)行其他邏輯强戴,也會主動檢測io是否準(zhǔn)備好亭螟。

非阻塞和阻塞的概念相對應(yīng)挡鞍,指在不能立刻得到結(jié)果之前,該函數(shù)不會阻塞當(dāng)前線程预烙,而會立刻返回墨微。

再簡單點理解就是:

1. 同步,就是我調(diào)用一個功能扁掸,該功能沒有結(jié)束前翘县,我死等結(jié)果。

2. 異步也糊,就是我調(diào)用一個功能炼蹦,不需要知道該功能結(jié)果,該功能有結(jié)果后通知我(回調(diào)通知)

3. 阻塞狸剃,就是調(diào)用我(函數(shù))掐隐,我(函數(shù))沒有接收完數(shù)據(jù)或者沒有得到結(jié)果之前,我不會返回钞馁。

4. 非阻塞虑省,就是調(diào)用我(函數(shù)),我(函數(shù))立即返回僧凰,通過select通知調(diào)用者

同步IO和異步IO的區(qū)別就在于:數(shù)據(jù)拷貝的時候進(jìn)程是否阻塞

阻塞IO和非阻塞IO的區(qū)別就在于:應(yīng)用程序的調(diào)用是否立即返回

什么是java序列化探颈,如何實現(xiàn)java序列化?

答:我們有時候?qū)⒁粋€java對象變成字節(jié)流的形式傳出去或者從一個字節(jié)流中恢復(fù)成一個java對象训措,例如伪节,要將java對象存儲到硬盤或者傳送給網(wǎng)絡(luò)上的其他計算機,這個過程我們可以自己寫代碼去把一個java對象變成某個格式的字節(jié)流再傳輸绩鸣,但是怀大,jre本身就提供了這種支持,我們可以調(diào)用OutputStream的writeObject方法來做呀闻,如果要讓java 幫我們做化借,要被傳輸?shù)膶ο蟊仨殞崿F(xiàn)serializable接口,這樣捡多,javac編譯時就會進(jìn)行特殊處理蓖康,編譯的類才可以被writeObject方法操作,這就是所謂的序列化垒手。需要被序列化的類必須實現(xiàn)Serializable接口蒜焊,該接口是一個mini接口,其中沒有需要實現(xiàn)的方法科贬,implements Serializable只是為了標(biāo)注該對象是可被序列化的山涡。

例如,在web開發(fā)中,如果對象被保存在了Session中鸭丛,tomcat在重啟時要把Session對象序列化到硬盤竞穷,這個對象就必須實現(xiàn)Serializable接口。如果對象要經(jīng)過分布式系統(tǒng)進(jìn)行網(wǎng)絡(luò)傳輸或通過rmi等遠(yuǎn)程調(diào)用鳞溉,這就需要在網(wǎng)絡(luò)上傳輸對象瘾带,被傳輸?shù)膶ο缶捅仨殞崿F(xiàn)Serializable接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熟菲,一起剝皮案震驚了整個濱河市看政,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抄罕,老刑警劉巖允蚣,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呆贿,居然都是意外死亡嚷兔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門做入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冒晰,“玉大人,你說我怎么就攤上這事竟块『耍” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵浪秘,是天一觀的道長蒋情。 經(jīng)常有香客問我,道長耸携,這世上最難降的妖魔是什么棵癣? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮违帆,結(jié)果婚禮上浙巫,老公的妹妹穿的比我還像新娘金蜀。我一直安慰自己刷后,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布渊抄。 她就那樣靜靜地躺著尝胆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪护桦。 梳的紋絲不亂的頭發(fā)上含衔,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音,去河邊找鬼贪染。 笑死缓呛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杭隙。 我是一名探鬼主播哟绊,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼痰憎!你這毒婦竟也來了票髓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤铣耘,失蹤者是張志新(化名)和其女友劉穎洽沟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜗细,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡裆操,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳄乏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跷车。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖橱野,靈堂內(nèi)的尸體忽然破棺而出朽缴,到底是詐尸還是另有隱情,我是刑警寧澤水援,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布密强,位于F島的核電站,受9級特大地震影響蜗元,放射性物質(zhì)發(fā)生泄漏或渤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一奕扣、第九天 我趴在偏房一處隱蔽的房頂上張望薪鹦。 院中可真熱鬧,春花似錦惯豆、人聲如沸池磁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽地熄。三九已至,卻和暖如春芯杀,著一層夾襖步出監(jiān)牢的瞬間端考,已是汗流浹背雅潭。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留却特,地道東北人扶供。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像裂明,于是被迫代替她去往敵國和親诚欠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 流就是當(dāng)不同的介質(zhì)之間有數(shù)據(jù)交互的時候漾岳,JAVA就使用流來實現(xiàn)轰绵。數(shù)據(jù)源可以是文件,還可以是數(shù)據(jù)庫尼荆,網(wǎng)絡(luò)甚至是其他的...
    從小白到全棧閱讀 294評論 0 0
  • I/O類庫中使用“流”這個抽象概念左腔。Java對設(shè)備中數(shù)據(jù)的操作是通過流的方式。表示任何有能力產(chǎn)出數(shù)據(jù)的數(shù)據(jù)源對象捅儒,...
    千淘萬漉閱讀 7,311評論 0 2
  • 一液样、IO流概述 概述: IO流簡單來說就是Input和Output流,IO流主要是用來處理設(shè)備之間的數(shù)據(jù)傳輸巧还,Ja...
    侯蛋蛋_閱讀 418評論 0 1
  • 1. 流的概念 流是一組有順序的鞭莽,有起點和終點的字節(jié)集合。 2. 流的分類 按處理數(shù)據(jù)的類型分為字節(jié)流和字符流按數(shù)...
    sofarsogoo_932d閱讀 226評論 0 1
  • 1麸祷、IO流 1.1澎怒、概述 之前學(xué)習(xí)的File類它只能操作文件或文件夾,并不能去操作文件中的數(shù)據(jù)阶牍。真正保存數(shù)據(jù)的是文...
    Villain丶Cc閱讀 2,647評論 0 5