Java的基本数据类型与流

RK3588+TRL8367s四网口千兆交换机硬件调试DTS配置实战 本文详细介绍了基于RK3588处理器RTL8367S交换机芯片构建四网口千兆交换设备的硬件调试DTS配置实战。文章深入对比了MDIOSMI两种通讯方式的配置差异,提供了详尽的设备树代码示例,并总结了常见问题的排查思路,旨在帮助开发者高效完成嵌入式网络设备的软硬件集成调试工作。 阅读详情
使用Java操作二进制文件使用Java操作文本文件两篇文章分别介绍了如何操作二进制文件和文本文件,事实上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联网中使用序列化机制。

Python模拟发送SOME/IP消息(Scapy模块) SOMEIP提供服务、订阅、响应、通知等Python代码示例 阅读详情

相关推荐

Java函数式编程之【基本数据类型

(Stream)通常是对象(Stream<T>),本文主要介绍基本数据类型(IntStream, LongStream 和 DoubleStream)。这三种基本数据类型,虽然的名称上用的是Int、Long、Double,好像是包装对象,实际上它们处理的是基本数据类型int、long和double的数据。 当把基本数据类型转换为对象(Stream<T>)我们常称这为的装箱;反之则称为的拆箱。 基本数据类型Java函数式编程中兼顾简洁性性能的关键工具,对于大规模数值计算可明显提高性能

weixin_42369079的博客 1063

数据类型序列化

内存和磁盘之间是频繁的进行数据的交换的。 序列化: 把内存中的对象以字节数组的形式写入磁盘中的过程,就叫做序列化序列化: 把磁盘中的字节数组转换成对象的形式写入内存的过程。 java中的序列化Java中的序列化是比较重量级的序列化,不适用于海量数据的处理。 hadoop中的序列化java序列化基础上按照...

qq_43668119的博客 433

PaddleOCRv5文字识别DLL封装易语言调用源码.zip

PaddleOCRv5文字识别DLL封装易语言调用源码.zip

Java各种数据类型序列化

对象序列化是一个用于将对象状态转换为字节的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节创建对象的相反的过程称为反序列化。 可以理解为序列化是将数据转换成byte[]的表示方式。 对象序列化: 首先要实现Serializable接口 使用ObjectOutputStream序列化,返回byte[],使用ObjectInputStream反序列化byte[]为对象 fast...

p7+的博客 3149

Java 中有哪些类型的

转换是字符和字节之间的桥梁,它可以将字节转换为字符,也可以将字符转换为字节。InputStreamReader 将字节转换为字符,OutputStreamWriter 将字符转换为字节。转换使用指定的字符集将字节中的字节解码为字符,或将字符编码为指定的字节序列。字节可以处理任何类型的数据,但是它们是以字节为单位进行操作的。字符用于处理字符数据,它们是以字符为单位进行操作的。Java 中的(Stream)分为两种类型:字节和字符

weixin_44798281的博客 2201

JAVA--四大基本

是程序和设备之间嫁接起来用于数据传输的一根管道,该管道上有许多按钮用于实现不同的功能,而这根管道就是。(是可以实现输入输出的类,即一定是类但类不一定是

weixin_65282950的博客 2281

java中IO详解

IO作为java基础中的必备技能会常常被我们用到,本篇文章笔者就来具体讲述一下IO,希望能对小伙伴们起到帮助作用,如有不当之处,欢迎补充。   一、什么是IO 首先我们要明白什么是是计算机用来传输文件、保存文件的一种方式。我们在开发中会经常用到IO,如:文件的上传和下载,文件的复制等。根据的方向,分为输入和输出。通常二者搭配使用完成文件上传和下载。输入就是你要让计算机知...

莫离瑜的博客 814

Java基本数据类型

Data /* * 基本数据类型 Data * 是字节的功能 * 基本数据类型+String * DataInputStream 新增方法: readXxx() * DataOutputStream 新增方法: writeXxx() * *其中有一个异常:EOFException:文件存在,内容读取不到-->操作必须是源文件 * */ pu...

syf_519的博客 280

Java 操作基本数据类型

package io.p5.datastream; import java.io.DataInput; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.

Aseveng的博客 460

java常用类型_Java基本数据类型

Java基本数据类型更新时间:2006年10月13日 00:00:00 作者:Java中除了二进制文件和使用文本文件外还有基于Data的数据操作,这里的Data指的是Java基本数据类型String基本数据类型包括byte、int、char、long、float、double、boolean和short。说到Java基本数据类型必须谈到的两个类是DataInputStream和D...

weixin_40006763的博客 343

Java 中有几种类型的

Java 中有几种类型的 按照的方向:输入(inputStream)和输出(outputStream)。 按照实现功能分:节点(可以从或向一个特定的地方(节点)读写数据 如 FileReader。 处理(是对一个已存在的的连接和封装,通过所封装的的功能调用实现数据读写。如 BufferedReader。 处理的构造方法总是要带一个其他的对象做参数。一个对象经过其他...

mohanの博客 3100

Java中的类型详解

Java中,(Stream)是用于处理数据的输入和输出的重要概念。Java可以按照不同的标准进行分类,下面我们将详细解释这些类型。

✨ 欢迎来到【Seal ^_^ 的CSDN博客】!✨ 6165

Stream - 获取Stream和转换操作(含基本数据类型)

是jdk1.8对集合对象功能的增强,可以通过将集合转换为模型,通过声明的方式对集合中的每个元素进行一系列并行或者串行的水线操作。Stream只要给出对其包含的元素执行什么操作,Stream就会隐式地在内部进行遍历,并给出响应的数据转换。Stream可以并行化操作,Stream的并行操作是依赖Java7中引入的Fork/Join框架拆分任务和加速处理过程,并且允许数据源是无限的。

qq_43985303的博客 8070

Java中有几种类型的

字节(Byte Stream):用于处理所有类型的数据,特别是二进制数据。及其子类如等。及其子类如等。字符(Character Stream):用于处理文本数据,自动处理字符编码。Reader及其子类如FileReader等。Writer及其子类如FileWriter等。根据具体需求选择合适的类型和子类,可以有效地处理Java中的I/O操作。

weixin_45990682的博客 860

Java基础——IO

文章目录FileReader类FileInputStream类缓冲转换对象随机存取文件(RandomAccessFile)不常用的 FileReader类 举例: IO\FileReaderWriterTest.jav; IO\FileWriterTest.java FileInputStream类 可以批量读写英文文本文件,英文字符只有一个字节,而其他语言占多个字节,就会出现乱码的情况。 如果一个一个读写或只是复制操作,不涉及控制台输出,文本文件还是可以用字节处理。(.txt,.java,.C

AlexTuringGong的博客 163

java中的序列化机制详解

对象的序列化机制  要想一个对象可以持久化到一个文件当中,必须保证这个对象所处的类是可序列化的。这个持久化的过程就叫做序列化。同理反序列化也需要保证这个对象所处的类是可序列化的。  当然不仅可以存在持久化到文件,也可以通过网络的方式传输出去。 对象的序列化机制:  允许把内存中的Java对象转换成平台无关的二进制,从而允许把这种二进制持久的保存在硬盘上,或者通过网络将这种二进制传输到另一个网络节点。—>(序列化)  当其他程序获得了这种二进制,就可以恢复成原来的Java对象。—>(反序

zrulin的博客 990

IO(下)

一、缓冲 1、缓冲涉及到的类: BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter 2、引入目的 作用:提高的读取、写入的速度 提高读写速度的原因:内部提供了一个缓冲区的内存中。从内存中读取的速度要高于直接从硬盘中读取的速度。 3、使用说明 当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区。 当使用 BufferedInputStream读取字节文件时,

Vv的博客 238

文件读写的一个例子

java.io包中还有许多其他的,主要是为了提高性能和使用方便。C/C++只能提供字节Java中的分为两种,一种是字节,另一种是字符,分别由四个抽象类来表示(每种包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的均是由它们派生出来的.字符和字节是根据处理数据的不同来区分的。字节按照

anhuixiaozi的专栏 1103

java的类型_Java 中有几种类型的

字节,字符。字节继承于InputStream、OutputStream,字符继承于Reader、Writer。在java.io 包中还有许多其他的,主要是为了提高性能和使用方便。补充:关于Java的IO需要注意的有两点:一是两种对称性(输入和输出的对称性,字节和字符的对称性);二是两种设计模式(适配器模式和装潢模式)。另外Java中的不同于C#的是它只有一个维度一个方向。补充:下面用I...

weixin_26905423的博客 580

java中几种类型的

转载:http://blog.csdn.net/yakihappy/archive/2009/03/11/3979811.aspx  Java中有几种类型的?JDK为每种类型的提供了一些抽象类以供继承,请说出他们分别是哪些类? 字节,字符。字节继承于InputStream \ OutputStream,字符继承于InputStreamReader \ OutputStrea

Spring为核心 1271
上一篇: 使用Java操作文本文件
下一篇: J2ME对话-采访KVM之父AT
mingjava
博客等级 码龄24年 68粉丝 114原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值