成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java中基本數據類型與應用

開發 后端
Java中除了二進制文件和使用文本文件外還有基于Data的數據操作,這里的Data指的是Java的基本數據類型和String。基本數據類型包括byte、int、char、long、float、double、boolean和short。

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

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

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

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

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

  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 

序列化成功!

【編輯推薦】

  1. Java中的Collection類
  2. 學習java大概步驟
  3. 在Java中>、>>、>>>三者的區別
  4. Java新手入門的30個基本概念
  5. Java中的四個核心技術思想
責任編輯:于鐵 來源: 互聯網
相關推薦

2016-08-18 14:13:55

JavaScript基本數據引用數據

2010-10-08 09:02:03

JavaScript基

2018-05-25 09:50:30

Java數據類型類型轉換

2023-03-27 10:04:27

數據類型浮點型布爾型

2020-10-26 13:46:07

Java基礎入門篇

2021-04-28 18:16:24

Rust數據類型

2010-04-27 11:03:39

Oracle Java

2019-11-11 14:55:25

Redis數據類型命令

2017-02-27 08:34:09

JavaScript數據引用

2009-08-14 11:15:45

C#基本數據類型

2010-01-18 16:49:36

VB.NET基本數據類

2023-07-04 08:41:08

Redis數據類型

2024-11-12 13:01:46

2024-06-11 08:30:31

2010-08-10 17:17:59

2024-11-04 06:20:00

Redis單線程

2022-03-14 09:41:10

POJO類型系統

2019-08-12 15:40:26

Redis數據庫數據類型

2023-04-06 07:49:23

Python數據類型

2010-10-08 15:11:28

JavaScript數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人av在线播放 | 久久99精品久久久久蜜桃tv | 欧美精品中文字幕久久二区 | 91免费看片 | 日本欧美国产在线 | av在线一区二区三区 | 日韩免费一区二区 | 亚洲精品成人免费 | 欧美亚洲国产成人 | 日韩三级免费观看 | 欧美男男videos| 亚洲第一av | 午夜精品一区二区三区在线视频 | 成人一区二区在线 | 99热最新 | 成人久草| 欧美www在线观看 | 久久成人精品视频 | a国产视频 | 成人免费在线 | 久久青青| 国产日韩欧美一区二区 | 91超碰在线观看 | 欧美日韩国产欧美 | 久久久www成人免费无遮挡大片 | 亚洲天堂一区二区 | 亚洲国产精品日本 | 国产精品久久久久久久久久久久 | 亚洲欧美日韩一区 | 天天操天天干天天爽 | 久久精品色欧美aⅴ一区二区 | 91色视频在线观看 | 亚洲美女av网站 | 日韩精品免费视频 | 国产在线麻豆精品入口 | 成人精品国产一区二区4080 | 在线第一页 | 第一av | 伊人久久综合 | 蜜桃免费一区二区三区 | 亚洲免费网 |