最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

JavaIO編程(鍵盤(pán)輸入,緩沖輸入流、Scanner工具、序列化與反序列化)附帶相關(guān)面試題

2023-08-07 09:39 作者:Alphamilk  | 我要投稿

1.System類對(duì)io的支持

system對(duì)io支持主要有三個(gè)方法

方法描述

  • System.in標(biāo)準(zhǔn)輸入流,用于從鍵盤(pán)接收輸入信息。

  • System.out標(biāo)準(zhǔn)輸出流,用于向控制臺(tái)輸出信息。

  • System.err標(biāo)準(zhǔn)錯(cuò)誤流,用于向控制臺(tái)輸出錯(cuò)誤信息。

最熟悉的應(yīng)該是system.out,因?yàn)槠綍r(shí)輸出都用到該方法,system.err輸出錯(cuò)誤信息,與一般system.out的區(qū)別在于在編譯工具如idea會(huì)對(duì)system.err有特殊標(biāo)識(shí)

System.in 是通過(guò)鍵盤(pán)輸入數(shù)據(jù)

以下案例將通過(guò)使用鍵盤(pán)輸入實(shí)現(xiàn)數(shù)據(jù)輸入

在案例代碼中可以看到有許多的弊端,1.數(shù)據(jù)需要使用字節(jié)數(shù)組傳輸,一旦數(shù)據(jù)超過(guò)數(shù)組長(zhǎng)度就會(huì)發(fā)生異常2.因?yàn)閟ystem.in是輸入字節(jié)流,所以對(duì)中文處理不夠好

在案例代碼中可以看到有許多的弊端,1.數(shù)據(jù)需要使用字節(jié)數(shù)組傳輸,一旦數(shù)據(jù)超過(guò)數(shù)組長(zhǎng)度就會(huì)發(fā)生異常2.因?yàn)閟ystem.in是輸入字節(jié)流,所以對(duì)中文處理不夠好

2.BufferReader緩沖輸入流

通過(guò)引入BufferReader緩沖輸入流可以解決上述問(wèn)題。

該流最核心的兩個(gè)方法:

1.public BufferReader(Reader in)接收一個(gè)Reader實(shí)例

2.public String readLine()throws IOException? 一次性將緩沖區(qū)的內(nèi)容讀取出來(lái)

方法描述

  • BufferedReader(Reader in)構(gòu)造方法,接收一個(gè)Reader實(shí)例作為輸入流。
    readLine()讀取一行文本,返回一個(gè)字符串。如果已到達(dá)流的末尾,則返回null。

案例代碼如下:

但是這些目前為止也只是實(shí)現(xiàn)最簡(jiǎn)單的輸入,但是要實(shí)現(xiàn)復(fù)雜一些的輸入,比如輸入自動(dòng)判定是否是整數(shù)等等還做不到,所以引入Scanner輸入流工具

但是這些目前為止也只是實(shí)現(xiàn)最簡(jiǎn)單的輸入,但是要實(shí)現(xiàn)復(fù)雜一些的輸入,比如輸入自動(dòng)判定是否是整數(shù)等等還做不到,所以引入Scanner輸入流工具

3.Scanner輸入流工具

Scanner作為工具輸入流,其中有許多的方法,方便輸入時(shí)候用上,以下是一些常用的方法

方法描述

  • scanner.next()從輸入中獲取下一個(gè)以空格分隔的字符串。

  • scanner.nextInt()從輸入中獲取下一個(gè)整數(shù)型數(shù)據(jù)。

  • scanner.hasNext(pattern)檢查輸入中是否存在與指定正則表達(dá)式

  • pattern 匹配的下一個(gè)字符串。

  • scanner.hasNextInt()檢查輸入中是否存在下一個(gè)整數(shù)型數(shù)據(jù)。scanner.useDelimiter(delimiter)設(shè)置輸入分隔符,即用于將輸入拆分為不同部分的字符串。默認(rèn)情況下,分隔符為空格、制表符和換行符。

  • scanner.nextLine()獲取輸入中的下一行文本(包括回車(chē)符),作為字符串返回。

案例1.使用Scanner實(shí)現(xiàn)鍵盤(pán)數(shù)據(jù)輸入

案例2.輸入日期數(shù)據(jù),并用正則表達(dá)式判斷


4.對(duì)象序列化

一個(gè)對(duì)象作為一串代碼,那么一般情況下無(wú)法通過(guò)對(duì)象引用的方式將其引入文件中,那么此時(shí)就需要對(duì)象序列化,所謂對(duì)象序列化就是將對(duì)象變成二進(jìn)制的數(shù)據(jù)流的方式放入文件中。

想要一個(gè)對(duì)象能夠?qū)崿F(xiàn)序列化那么該類一定要實(shí)現(xiàn)Serializable接口,該接口沒(méi)有任何的功能,其意義只是告訴程序員這個(gè)類的對(duì)象能夠進(jìn)行序列化

想要真正實(shí)現(xiàn)序列化還需要ObjectInputStreamObjectOutputStream兩個(gè)類實(shí)現(xiàn)

首先是ObjectOutputStream的常用方法:

方法描述

  • ObjectOutputStream(OutputStream out)構(gòu)造方法,傳入傳輸?shù)膶?duì)象數(shù)據(jù)流writeObject(Object obj)將指定對(duì)象寫(xiě)入輸出流

ObjectInputStream的常用方法:

方法描述

  • ObjectInputStream(InputStream in)構(gòu)造方法,傳入要讀取的對(duì)象數(shù)據(jù)流

  • readObject()從輸入流中讀取對(duì)象

具體案例:

?面試題:什么是 java 序列化?什么情況下需要序列化?

  1. 序列化就是一種用來(lái)處理對(duì)象流的機(jī)制。將對(duì)象的內(nèi)容流化,將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。

  2. 序列化是通過(guò)實(shí)現(xiàn)serializable接口,該接口沒(méi)有需要實(shí)現(xiàn)的方法,implement Serializable只是為了標(biāo)注該對(duì)象是可被序列化的,使用一個(gè)輸出流(FileOutputStream)來(lái)構(gòu)造一個(gè)ObjectOutputStream對(duì)象,接著使用ObjectOutputStream對(duì)象的writeObejct(Object object)方法就可以將參數(shù)的obj對(duì)象到磁盤(pán),需要恢復(fù)的時(shí)候使用輸入流。

  3. 序列化是將對(duì)象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^(guò)程。

  4. 例如,可以序列化一個(gè)對(duì)象,然后通過(guò)HTTP通過(guò)Internet在客戶端和服務(wù)器之間傳輸該對(duì)象。在另一端,反序列化將從流中心構(gòu)造成對(duì)象。

  5. 一般程序在運(yùn)行時(shí),產(chǎn)生對(duì)象,這些對(duì)象隨著程序的停止而消失,但我們想將某些對(duì)象保存下來(lái),這時(shí),我們就可以通過(guò)序列化將對(duì)象保存在磁盤(pán),需要使用的時(shí)候通過(guò)反序列化獲取到。

  6. 對(duì)象序列化的最主要目的就是傳遞和保存對(duì)象,保存對(duì)象的完整性和可傳遞性。

  7. 譬如通過(guò)網(wǎng)絡(luò)傳輸或者把一個(gè)對(duì)象保存成本地一個(gè)文件的時(shí)候,需要使用序列化。


JavaIO編程(鍵盤(pán)輸入,緩沖輸入流、Scanner工具、序列化與反序列化)附帶相關(guān)面試題的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
光泽县| 长兴县| 留坝县| 长阳| 五台县| 酉阳| 乐平市| 南华县| 通许县| 嘉定区| 上饶县| 越西县| 高州市| 铜陵市| 大兴区| 达拉特旗| 阿克苏市| 乐东| 乌拉特中旗| 花垣县| 应用必备| 大悟县| 鹿泉市| 卢氏县| 浮梁县| 耿马| 德保县| 金寨县| 安乡县| 普安县| 宜都市| 平安县| 房山区| 锦州市| 驻马店市| 晋宁县| 牙克石市| 西华县| 呼图壁县| 云南省| 青铜峡市|