[問(wèn)答題] 請(qǐng)完成下列Java程序:首先建立一個(gè)類,包含2個(gè)私有成員變量,分別為int和double型,并提供公共方法setInt()和 setDouble()
[問(wèn)答題] 請(qǐng)完成下列Java程序:首先建立一個(gè)類,包含2個(gè)私有成員變量,分別為int和double型,并提供公共方法setInt()和 setDouble()分別給這兩個(gè)變量賦值和用toString()方法顯示對(duì)象的私有成員變量的值,要求將這個(gè)類定義為Serializable,再創(chuàng)建這個(gè)類的持久對(duì)象,將對(duì)象寫入名為ex3_2.data的文件中并顯示對(duì)象的2個(gè)成員變量,最后從這個(gè)文件中讀取這個(gè)對(duì)象并顯示對(duì)象的2個(gè)成員變量。
注意:請(qǐng)勿改動(dòng)main()主方法和其他已有語(yǔ)句內(nèi)容,僅在下劃線處填入適當(dāng)?shù)恼Z(yǔ)句。程序運(yùn)行結(jié)果如下:
ex3_2: i=123 d=123.456
ex3_2: i=123 d=123.456
import java.io.*;
public class ex3_2 implements Serializable
private int n3_2;
private double d3_2;
ex3_2()
n3_2 = 25;
d3_2 = 12.23;
public void setDouble(double x)d3_2 = x;
public void setInt(int x)n3_2 = x;
public String toString()return("ex3_2: i=" + n3_2 + "d=" + d3_2);
public static void main(String[] arg)ex3_2 e1 = new ex3_2 );
ex3_2 e2;
e1.setInt(123);
e1.setDouble(123.456);
Syste
正確答案:oos3_2_writeObject(e1)e2 = (ex3_2)ois3_2.readObject()
參考解析:本題主要考查對(duì)象串行化的方法和可串行化類的構(gòu)造方法。解題關(guān)鍵是熟練掌握串行化的概念和目的,熟悉串行化的方法,如FileOutputStream類的用法等,在Java中這些方法已經(jīng)成為一種模式,需要熟記。本題中,通過(guò)構(gòu)造可串行化類ex3_2實(shí)現(xiàn)了Serializable接口并且含有2個(gè)成員變量n3_2和d3_2,這2個(gè)成員變量需要包括在數(shù)據(jù)流中以便保存某個(gè)ex3_2對(duì)象的整個(gè)狀態(tài),程序首先創(chuàng)建了一個(gè)ex3_2對(duì)象,接著將它存到一個(gè)磁盤文件中,然后再將它作為一個(gè)新對(duì)象讀回。第1個(gè)空,通過(guò)ObjectOutputStream的對(duì)象oos3_2調(diào)用writeObject()方法將ex3_2的對(duì)象e1寫入磁盤文件ex3_2.data中;第2個(gè)空,通過(guò)ObjectInputStream的對(duì)象ois3_2調(diào)用readObject()方法從磁盤文件ex3_2.data中讀取對(duì)象,由于讀出來(lái)的是Object類型的對(duì)象,所以需要做類型轉(zhuǎn)換。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。