首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ObjectOutputStream的writeObject方法使用什么字符编码?

相关·内容

Java转换流_java中字符使用什么编码

编码转换流 字节流:针对二进制文件 字符流:针对文本文件,读写容易出现乱码现象,在读写时,最好指定编码集为UTF-8 1 概述 编码转换流(InputStreamReader/OutputStreamWriter...)主要进行编码转换,用来解决字符流读写乱码问题 2 工具API学习 OutputStreamWriter : OutputStreamWriter(OutputStream out)把传入字节流转成字符流...,并将读取到信息打印在控制台 //read方法返回值类型是int,打印编码 //UTF-8-28023 gbk-23092 iso-8859-1-230 //System.out.println...(in.read()); //拓展:将刚刚读到数据,以中文格式展示在控制台 char[] ch = new char[8192]; //Reader中方法:read(char[] cbuf)将字符读入数组...,返回读取到字符个数 int len = in.read(ch);//len保存是读取到字符个数 //此处是String构造函数,利用ch数组中数据,构建一个字符串,并打印到控制台 System.out.println

81120

javaIO流

每个ASCII字符占用1 个字节,因此,ASCII 编码可以表示最大字符数是255(00H—FFH)。这对于英文而言,是没有问题,一般只什么用到前128个(00H–7FH,最高位为0)。...使用不同编码方式,相同字符会有不同二进制表示。...,如果用十六机制编辑器打开文件可以看到64 65 6D 6F,我们并没有在代码中指定编码方式,实际上,在我们没有指定时使用是操作系统默认字符编码方式来对我们要写入字符进行编码。...此处为了避免中文乱码,将字节流指定编码转换为字符流,然后再用 getBytes(“UTF-8”) 方法获取相应编码字节,实现字节流输出。...那么为什么以上结果却通过序列化和反序列化把List中元素保留下来了呢 在ArrayList中定义了来个方法writeObject()和readObject() 结论是: 在序列化过程中,如果被序列化类中定义了

28520

Java中IO流基础知识

字节流读取时候,读到一个字节就返回一个字节;字符使用了字节流读到一个或多个字节(中文对应字节数是两个,在UTF-8码表中是3个字节)时。...先去查指定编码表,将查到字符返回。字节流可以处理所有类型数据,如:图片, MP3 ,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。...序列化实现:将需要被序列化类实现Serializable接口,该接口没有需要实现方法,implements Serializable只是为了标注该对象是可被序列化,然后使用一个输出流(如:FileOutputStream...)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象writeObject(Object obj)方法就可以将参数为obj对象写出(即保存其状态...序列化API java.io.ObjectOutputStream代表对象输出流,它 writeObject(Object obj)方法可对参数指定obj对象进行序列化,把得到字节序列写到一个目标输出流中

45120

netty系列之:netty中常用对象编码解码器

简介 我们在程序中除了使用常用字符串进行数据传递之外,使用最多还是JAVA对象。在JDK中,对象如果需要在网络中传输,必须实现Serializable接口,表示这个对象是可以被序列化。...今天带大家来看看netty中提供对象编码器。 什么是序列化 序列化就是将java对象按照一定顺序组织起来,用于在网络上传输或者写入存储中。...注意,writeObject和readObject都是private void方法。他们调用是通过反射来实现。...使用真正加密 上面的例子, 我们只是对age字段进行了加密,如果我们想对整个对象进行加密有没有什么处理办法呢?...这是因为我们需要一个通用对象编码和解码器,如果使用ObjectOutputStream和ObjectInputStream,因为不同对象结构是不一样,所以我们在读取对象时候需要知道读取数据对象类型才能进行完美的转换

32910

netty系列之:netty中常用对象编码解码器

简介 我们在程序中除了使用常用字符串进行数据传递之外,使用最多还是JAVA对象。在JDK中,对象如果需要在网络中传输,必须实现Serializable接口,表示这个对象是可以被序列化。...今天带大家来看看netty中提供对象编码器。 什么是序列化 序列化就是将java对象按照一定顺序组织起来,用于在网络上传输或者写入存储中。...注意,writeObject和readObject都是private void方法。他们调用是通过反射来实现。...使用真正加密 上面的例子, 我们只是对age字段进行了加密,如果我们想对整个对象进行加密有没有什么处理办法呢?...这是因为我们需要一个通用对象编码和解码器,如果使用ObjectOutputStream和ObjectInputStream,因为不同对象结构是不一样,所以我们在读取对象时候需要知道读取数据对象类型才能进行完美的转换

48420

21天学习挑战赛之javaIO流(二)

1.字符流 1.1为什么会出现字符流【理解】 字符介绍 由于字节流操作中文不是特别的方便,所以Java就提供字符字符流 = 字节流 + 编码表 中文字节存储方式 用字节流复制文本文件时...汉字在存储时候,无论选择哪种编码存储,第一个字节都是负数 1.2编码表【理解】 什么字符集 是一个系统支持所有字符集合,包括各国家文字、标点符号、图形符号、数字等 l计算机要准确存储和识别各种字符集符号...它使用一至四个字节为每个字符编码 编码规则: 128个US-ASCII字符,只需一个字节编码 拉丁文等字符,需要二个字节编码 大部分常用字(含中文),使用三个字节编码 其他极少使用Unicode...辅助字符使用四字节编码 1.3字符串中编码解码问题【应用】 相关方法 方法名 说明 byte[] getBytes() 使用平台默认字符集将该 String编码为一系列字节 byte[] getBytes...ObjectOutputStream 序列化对象方法 方法名 说明 void writeObject(Object obj) 将指定对象写入ObjectOutputStream 示例代码 学生类

42820

Java 序列化

使用场景:所有可在网络上传输对象都必须是可序列化,比如RMI(remote method invoke,即远程方法调用),传入参数或返回对象都是可序列化,否则会出错;所有需要保存到磁盘java...Serializable java.io.ObjectOutputStream代表对象输出流 它writeObject(Object obj)方法可对参数指定obj对象进行序列化,把得到字节序列写到一个目标输出流中...使用transient虽然简单,但将此属性完全隔离在了序列化之外。java提供了可选自定义序列化。可以进行控制序列化方式,或者对序列化数据进行编码加密等。...如果writeObject使用某种规则序列化,则相应readObject需要相反规则反序列化,以便能正确反序列化出对象。这里展示对名字进行反转加密。...通常建议对于final修饰类重写readResolve方法没有问题;否则,重写readResolve使用private修饰。

1.1K00

JAVA 对象序列化(一)——Serializable

接口对象转换成一个字符序列,并能够在以后将这个字节序列完全恢复为原来对象。...这时候,只需要调用writeObject()方法就可以将对象序列化,并将其发送给OutputStream(记住:对象序列化是基于字节,不能使用Reader和Writer等基于字符层次结构)。...2)序列前对象与序列化后对象是什么关系?是("=="还是equal?是浅复制还是深复制?)            答案:深复制,反序列化还原后对象地址与原来地址不同。...在Java中,软件兼容性是一个大问题,尤其在使用到对象串行性时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后重新部署了,那么在这种情况下, 用老软件来读取新文件格式虽然不是什么难事,但是有可能丢失一些信息...●域名字(name)。  ●方法名字(Save)。  ●已实现接口(Serializable)。  改动上述任意一项内容(无论是增加或删除),都会引起编码值变化,从而引起类似的异常警报。

49930

彻底理解Serializable和Parcelable

什么是序列化和反序列化,为什么需要序列化? Java中Serializable序列化是怎么实现? Android中Parcelable序列化是怎么实现? 有哪些使用场景,实现方式怎么选?...objectOutputStream = new ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject("Hello...0005 是stream header版本号 //74 是字符串类型标识,如果字符串长度小于0xFFFF,写入0x74,否则写入0x7C //000C 是字符长度,我们写入是“Hello world...,而且Java还提供了writeObject和readObject二个方法,Serializable在序列化时,如果检测到我们类重写了writeObject方法,就执行该方法来替代默认序列化调用。...JDK中有很多这样类,比如ArrayList,HashMap,都是重写 了writeObject方法

1.1K30

【Java基本功】深入浅出Java中序列化与反序列化

本文介绍了Java序列化基本概念,序列化和反序列化使用方法,以及实现原理等,比较全面地总结序列化相关知识点,并且使用具体例子来加以佐证。...而字节或XML编码格式可以还原完全相等对象。这个相反过程又称为反序列化。...writeObject方法把elementData数组中元素遍历保存到输出流(ObjectOutputStream)中。...答:在使用ObjectOutputStreamwriteObject方法和ObjectInputStreamreadObject方法时,会通过反射方式调用。...那么随机生成序列化 ID 有什么作用呢,有些时候,通过改变序列化 ID 可以用来限制某些用户使用。 4、序列化并不保存静态变量。

39020

夯实Java基础系列22:一文读懂Java序列化和反序列化

而字节或XML编码格式可以还原完全相等对象。这个相反过程又称为反序列化。...(该接口并没有方法和字段,为什么只有实现了该接口对象才能被序列化呢?) 当试图对一个对象进行序列化时候,如果遇到不支持 Serializable 接口对象。...writeObject方法把elementData数组中元素遍历保存到输出流(ObjectOutputStream)中。...答:在使用ObjectOutputStreamwriteObject方法和ObjectInputStreamreadObject方法时,会通过反射方式调用。...那么随机生成序列化 ID 有什么作用呢,有些时候,通过改变序列化 ID 可以用来限制某些用户使用。4、序列化并不保存静态变量。

1.4K00

夯实Java基础系列22:一文读懂Java序列化和反序列化

而字节或XML编码格式可以还原完全相等对象。这个相反过程又称为反序列化。...(该接口并没有方法和字段,为什么只有实现了该接口对象才能被序列化呢?) 当试图对一个对象进行序列化时候,如果遇到不支持 Serializable 接口对象。...writeObject方法把elementData数组中元素遍历保存到输出流(ObjectOutputStream)中。...答:在使用ObjectOutputStreamwriteObject方法和ObjectInputStreamreadObject方法时,会通过反射方式调用。...那么随机生成序列化 ID 有什么作用呢,有些时候,通过改变序列化 ID 可以用来限制某些用户使用。 4、序列化并不保存静态变量。

30210

序列化流程分析总结

序列化步骤通常是首先创建一个ObjectOutputStream输出流,然后调用ObjectOutputStream对象writeObject方法,按照一定格式(上面提到)输出可序列化对象。...writeObject0方法代码中,会主要使用到bout对象方法setBlockDataMode关闭Data Block模式; Data Block模式: 在JDK 1.2中,有必要修改和JDK 1.1...false (因为在ObjectOutputStreampublic构造方法中已经初始化了enableOverride = false;) 然后才是进入了关键方法writeObject0进一步序列化...),然后写入字符长度和内容; 现在我们重点来看看writeOrdinaryObject方法。...,跟进去: writeClassDesc方法主要用于判断当前类描述符使用什么方式写入,如果传入类描述信息是一个null引用,那么会调用writeNull方法,如果没有使用unshared方式,并且可以在

34120

Java(io流—Properties、序列化流与反序列化流)

Properties类 表示一个持久属性集; 特点: HashTable子类,Map集合中方法都可以使用; 该集合没有泛型,键值都是字符串; 持久属性集; 特有方法: Object setProperty...reader):按简单面向行格式从输入字符流中读取属性列表(键和元素对); void store(OutputStream out, String comments):以适合使用 load(InputStream...):以适合使用 load(Reader) 方法格式,将此 Properties 表中属性列表(键和元素对)写入输出字符; 序列化流与反序列化流 特点:用于操作对象,可以将对象写入到文件中,也可以从文件中读取对象...; ObjectOutputStream:对象序列化 void writeObject(Object obj):将指定对象写入 ObjectOutputStreamObjectOutputStream...= 42L; //对类序列号进行了绑定 如果你不想让资源类中某一个变量序列化; 可使用以下方法: transient:阻止成员变量序列化; static:无法进行序列化; 如图位置: io流往期

25110

高级API——【第二章】 输入输出流

什么要有字符流? Java中字符是采用Unicode标准,Unicode 编码中,一个英文为一个字节,一个中文为两个字节。 而在UTF-8编码中,一个中文字符是3个字节。...例如下面图中,“云深不知处”5个中文对应是15个字节:-28-70-111-26-73-79-28-72-115-25-97-91-27-92-124 那么问题来了,如果使用字节流处理中文,如果一次读写一个字符对应字节数就不会有问题...:字节流中包含字符流 * * 按照功能分类: * 节点流:所有的流都又叫做节点流 * 过滤流:给流增强功能 * * 使用流步骤: * 1、...oos = new ObjectOutputStream(fos); // oos.writeObject(stu); // //关闭流 // oos.close(); // fos.close...oos = new ObjectOutputStream(fos); oos.writeObject(slist); oos.close(); fos.close(); System.out.println

19220

【Java】序列化和反序列化

一般情况下使用最多是字节,字节相当于人民币元一样,虽然不是最低,但却是最常用。 一串字符在内存中一般是以ascii编码形式存在,不同编码占用子节长度不同 一个ascii码占用一个字节。...utf-8 是我们国内常用是针对unicode码一种可变编码方式。 ascii unicode 字节序 当一串数据太大时候,一个字节放不下,就需要使用多个字节。...JDK类库中序列化和反序列化API java.io.ObjectOutputStream: 表示对象输出流; 它writeObject(Object obj)方法可以对参数指定obj对象进行序列化...: ObjectOutputStream调用User对象writeObject(ObjectOutputStream out)方法进行序列化。...现在可以打开计算器,明白什么是序列与反序列化了。

10610
领券