动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.JDBC系列教程(四)---结果设置.
.Java性能.
.Java程序设计.
.变量范围.
.Java 6新更新 JRE环境和命令行开.
.解读Java中的“垃圾方言”.
.Java语言深入:C#与Java相似之处.
.java在Linux下的web应用(1).
.Java 基本语法(三)——运算符和.
.计算机论坛收集(本站论坛精帖子.
.介绍——用户认证管理设计方案.
.初探Java类加载机制的奥秘技巧.
.Swing 第三方工具设计.
.用Validator简化Struts的开发过程.
.JGraph 5.8 发布.
.使用JDOM操作XML系列文章二 从数.
.Java SE 6.0 桌面.
.Java Servlet API说明文档(2.1a.
.[Java]基本的学习实例.
.部署cas服务器实现定制JDBC验证.

Java中基本数据类型与流程操作方法

发表日期:2008-1-5 |



  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联网程序中使用序列化机制传输数据。下面我们看看如何自己实现序列化,首先我们要有两个构造函数其中一个参数为空。
  
  public Account()
  {
  
  }
  
  public Account(String userName, String email, int age, boolean gender)
  {
  this.userName = userName;
  this.email = email;
  this.age = age;
  this.gender = gender;
  }
  
  当我们进行序列化的时候也很简单,我们只是往DataOutputStream中按照顺序写入对象的成员变量。例如:
  
  public void serialize(DataOutputStream dos) throws IOException
  {
  dos.writeUTF(userName);
  dos.writeUTF(email);
  dos.writeInt(age);
  dos.writeBoolean(gender);
  }
  
  当我们进行反序列化的时候则按照相同的顺序从DataInputStream里面读取数据并赋值给成员变量。例如:
  
  public static Account deserialize(DataInputStream dis) throws IOException
  {
  Account account = new Account();
  account.userName = dis.readUTF();
  account.email = dis.readUTF();
  account.age = dis.readInt();
  account.gender = dis.readBoolean();
  return account;
  }
  
  为了便于调试我们还提供一个toString()的方法打印出对象的实际信息。这是个好的习惯。
  
  public String toString()
  {
  return "UserName = " + userName + " Email = " + email + " age = " + age + " gender = " + (gender ? "male" : "female");
  }
  
  为了测试序列化我们编写下面的程序进行测试,代码比较简单。
  
  package com.j2medev.mingjava;
  import java.io.*;
  
  public class TestDataIO
  {
  public static void main(String[] args) throws IOException
  {
  Account account = new Account("mingjava","eric.zhan@263.net",25,true);
  System.out.println("before serialization.........");
  System.out.println(account.toString());
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  DataOutputStream dos = new DataOutputStream(baos);
  account.serialize(dos);
  DataInputStream dis = new DataInputStream(new ByteArrayInputStream(baos.toByteArray()));
  Account sAccount = Account.deserialize(dis);
  System.out.println("after serialization..........");
  System.out.println(sAccount.toString());
  dos.close();
  dis.close();
  }
  }
  package com.j2medev.mingjava;
  import java.io.*;
  
  public class Account
  {
  private String userName = "";
  private String email = "";
  private int age = 0;
  private boolean gender = false;
  
  public Account()
  {}
  
  public Account(String userName, String email, int age, boolean gender)
  {
  this.userName = userName;
  this.email = email;
  this.age = age;
  this.gender = gender;
  }
  
  public void serialize(DataOutputStream dos) throws IOException
  {
  dos.writeUTF(userName);
  dos.writeUTF(email);
  dos.writeInt(age);
  dos.writeBoolean(gender);
  }
  
  public static Account deserialize(DataInputStream dis) throws IOException
  {
  Account account = new Account();
  account.userName = dis.readUTF();
  account.email = dis.readUTF();
  account.age = dis.readInt();
  account.gender = dis.readBoolean();
  return account;
  }
  
  public String toString()
  {
  return "UserName = " + userName + " Email = " + email + " age = " + age + " gender = " + (gender ? "male" : "female");
  }
  }
  
  编译运行程序在控制台输出:
  
  before serialization.........
  UserName = mingjava Email = eric.zhan@263.net age = 25 gender = male
  after serialization..........
  UserName = mingjava Email = eric.zhan@263.net age = 25 gender = male
  
  序列化成功,后面我将讲述如何在J2ME联网中使用序列化机制。
上一篇:Java 技术在嵌入式系统中的应用详解 人气:585
下一篇:初探Java类加载机制的奥秘技巧 人气:513
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-11-22 CMS001 v2.2 bulid 081122 Beta
2008-11-22 腾讯小说小偷 v5.0 20081113
2008-11-22 iestore网上商店系统 v1.0.7.0
2008-11-22 GKEE CRM客户管理系统 v1.2
2008-11-22 shopd1网店系统 v1.3
2008-11-22 翎风个人主页管理系统 v1.5
2008-11-22 开良狗狗影视搜索小偷 v1.1
2008-11-22 XtreMedia
2008-11-22 互联网数据分享应用平台 v1.0.0
2008-11-21 傲游(Maxthon) 2.1.5 正式版
2008-11-21 Skype v3.8.0.188 Final
2008-11-21 AirPlay OpenAlpha 2008.11.20
2008-11-21 屏幕文字抓取工具 DWMouse1.3.510
2008-11-21 Vista一键还原(Vista Ghost)1.
2008-11-21 SP Photo Fix照片修改1.2破解版
2008-11-21 QQ腾讯聊天工具 v1.2正式版
2008-11-21 FlightTrack航班信息v1.0破解版
2008-11-21 RealPiano仿真钢琴1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成