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

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
Java中基本數據類型與應用

Java中除了二進制文件和使用文本文件外還有基于Data的數據操作,這里的Data指的是Java的基本數據類型和String?;緮祿愋桶╞yte、int、char、long、float、double、boolean和short。

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

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

有一個重要的類RandomAccessFile實現了 DataInput和DataOutput兩個接口使得他能夠對文件同時進行寫和讀的操作。

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

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

 
 
 
  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;  

當我們進行序列化的時候也很簡單,我們只是往DataOutputStream中按照順序寫入對象的成員變量。例如:

 
 
 
  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);  

當我們進行反序列化的時候則按照相同的順序從DataInputStream里面讀取數據并賦值給成員變量。例如:

 
 
 
  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;  

為了便于調試我們還提供一個toString()的方法打印出對象的實際信息。這是個好的習慣。

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

為了測試序列化我們編寫下面的程序進行測試,代碼比較簡單。

 
 
 
  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. }  

編譯運行程序在控制臺輸出:

 
 
 
  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中基本數據類型與應用
網頁網址:http://www.5511xx.com/article/djipoce.html