日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java中基本數(shù)據(jù)類型與應(yīng)用

Java中除了二進(jìn)制文件和使用文本文件外還有基于Data的數(shù)據(jù)操作,這里的Data指的是Java的基本數(shù)據(jù)類型和String?;緮?shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比秦皇島網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式秦皇島網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋秦皇島地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

說(shuō)到Java的基本數(shù)據(jù)類型必須談到的兩個(gè)類是DataInputStream和DataOutputStream。它們提供了對(duì)Java基本數(shù)據(jù)類型的操作,但是這些方法事實(shí)上是在兩個(gè)重要的接口中定義的DataInput和DataOutput,它們的功能就是把二進(jìn)制的字節(jié)流轉(zhuǎn)換成 Java的基本數(shù)據(jù)類型,同時(shí)還提供了從數(shù)據(jù)中使用UTF-8編碼構(gòu)建String的功能。

有一個(gè)重要的類RandomAccessFile實(shí)現(xiàn)了 DataInput和DataOutput兩個(gè)接口使得他能夠?qū)ξ募瑫r(shí)進(jìn)行寫和讀的操作。

在DataInputStream和DataOutputStream兩個(gè)類中的方法都很簡(jiǎn)單,基本結(jié)構(gòu)為readXXXX()和 writeXXXX()其中XXXX代表基本數(shù)據(jù)類型或者String。在這里不多講述,不過(guò)值得一提的是我們有必要讀讀java中unicode的編碼規(guī)則,在API doc中有比較詳細(xì)的介紹。

通常我們的對(duì)象有很多都是由java的基本數(shù)據(jù)類型構(gòu)成的,比如一個(gè)人的信息包括姓名,電子信箱,電話號(hào)碼和性別等。其實(shí)我們可以用DataInputStream中的方法和DataOutputStream中的方法按照一定的序列把數(shù)據(jù)寫入流中再按照相同的序列把他們讀取出來(lái),這就是我們自己實(shí)現(xiàn)的序列化,這可以用在數(shù)據(jù)傳輸中,比如在J2ME聯(lián)網(wǎng)程序中使用序列化機(jī)制傳輸數(shù)據(jù)。下面我們看看如何自己實(shí)現(xiàn)序列化,首先我們要有兩個(gè)構(gòu)造函數(shù)其中一個(gè)參數(shù)為空。

 
 
 
  1. public Account()  
  2. {  
  3. }  
  4. public Account(String userName, String email, int age, boolean gender)  
  5. {  
  6. this.userName = userName;  
  7. this.email = email;  
  8. this.age = age;  
  9. this.gender = gender;  

當(dāng)我們進(jìn)行序列化的時(shí)候也很簡(jiǎn)單,我們只是往DataOutputStream中按照順序?qū)懭雽?duì)象的成員變量。例如:

 
 
 
  1. public void serialize(DataOutputStream dos) throws IOException  
  2. {  
  3. dos.writeUTF(userName);  
  4. dos.writeUTF(email);  
  5. dos.writeInt(age);  
  6. dos.writeBoolean(gender);  

當(dāng)我們進(jìn)行反序列化的時(shí)候則按照相同的順序從DataInputStream里面讀取數(shù)據(jù)并賦值給成員變量。例如:

 
 
 
  1. public static Account deserialize(DataInputStream dis) throws IOException  
  2. {  
  3. Account account = new Account();  
  4. account.userName = dis.readUTF();  
  5. account.email = dis.readUTF();  
  6. account.age = dis.readInt();  
  7. account.gender = dis.readBoolean();  
  8. return account;  

為了便于調(diào)試我們還提供一個(gè)toString()的方法打印出對(duì)象的實(shí)際信息。這是個(gè)好的習(xí)慣。

 
 
 
  1. public String toString()  
  2. {  
  3. return "UserName = " + userName + " Email = " + email + " age = " + age + " gender = " + (gender ? "male" : "female");  

為了測(cè)試序列化我們編寫下面的程序進(jìn)行測(cè)試,代碼比較簡(jiǎn)單。

 
 
 
  1. package com.j2medev.mingjava;  
  2. import java.io.*;  
  3. public class TestDataIO  
  4. {  
  5. public static void main(String[] args) throws IOException  
  6. {  
  7. Account account = new Account("mingjava","eric.zhan@263.net",25,true);  
  8. System.out.println("before serialization.........");  
  9. System.out.println(account.toString());  
  10. ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  11. DataOutputStream dos = new DataOutputStream(baos);  
  12. account.serialize(dos);  
  13. DataInputStream dis = new DataInputStream(new ByteArrayInputStream(baos.toByteArray()));  
  14. Account sAccount = Account.deserialize(dis);  
  15. System.out.println("after serialization..........");  
  16. System.out.println(sAccount.toString());  
  17. dos.close();  
  18. dis.close();  
  19. }  
  20. }  
  21. package com.j2medev.mingjava;  
  22. import java.io.*;  
  23. public class Account  
  24. {  
  25. private String userName = "";  
  26. private String email = "";  
  27. private int age = 0;  
  28. private boolean gender = false;  
  29. public Account()  
  30. {}  
  31. public Account(String userName, String email, int age, boolean gender)  
  32. {  
  33. this.userName = userName;  
  34. this.email = email;  
  35. this.age = age;  
  36. this.gender = gender;  
  37. }  
  38. public void serialize(DataOutputStream dos) throws IOException  
  39. {  
  40. dos.writeUTF(userName);  
  41. dos.writeUTF(email);  
  42. dos.writeInt(age);  
  43. dos.writeBoolean(gender);  
  44. }  
  45. public static Account deserialize(DataInputStream dis) throws IOException  
  46. {  
  47. Account account = new Account();  
  48. account.userName = dis.readUTF();  
  49. account.email = dis.readUTF();  
  50. account.age = dis.readInt();  
  51. account.gender = dis.readBoolean();  
  52. return account;  
  53. }  
  54. public String toString()  
  55. {  
  56. return "UserName = " + userName + " Email = " + email + " age = " + age + " gender = " + (gender ? "male" : "female");  
  57. }  

編譯運(yùn)行程序在控制臺(tái)輸出:

 
 
 
  1. before serialization.........  
  2. UserName = mingjava Email = eric.zhan@263.net age = 25 gender = male 
  3. after serialization..........  
  4. UserName = mingjava Email = eric.zhan@263.net age = 25 gender = male 

序列化成功!


分享文章:Java中基本數(shù)據(jù)類型與應(yīng)用
文章URL:http://www.5511xx.com/article/djipoce.html