Java——再看IO
2016-04-19 22:08
543 查看
一。编码问题
utf-8编码中,一个中文占3个字节,一个英文占1个字节;gbk编码中,一个中文占2个字节,一个英文占1个字节。
Java是双字节编码,为utf-16be编码,是说一个字符(无论中文还是英文,都占用2个字节)。因此如果这么问:Java字符串中一个字符可以放一个中文吗?是可以的!
如果一直某个字节序列的编码方式,当我们想将它还原成字符串时,应明确指定其编码格式,否则会出现乱码。
文本文件就是字节序列,可以是任意编码的字节序列。如果在中文机器上,直接创建文本文件,该文本文件只认识ANSI编码
View Code
transient 修饰后,不会进行虚拟机默认的序列化;也可以自己完成这个元素的序列化
为什么要使用transient关键字呢?
分析ArrayList的序列化与反序列化:实质是一个数组,但是这个数组并不一定放满了,因此我们不需要讲后面没有使用的地方进行序列化,可以根据自己的需要定制序列化,只是序列化数组中的有效元素,提高性能。
序列化中子父类构造函数调用问题
一个类实现了序列化接口,其子类都可以进行序列化
对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用;反之不会。
utf-8编码中,一个中文占3个字节,一个英文占1个字节;gbk编码中,一个中文占2个字节,一个英文占1个字节。
Java是双字节编码,为utf-16be编码,是说一个字符(无论中文还是英文,都占用2个字节)。因此如果这么问:Java字符串中一个字符可以放一个中文吗?是可以的!
如果一直某个字节序列的编码方式,当我们想将它还原成字符串时,应明确指定其编码格式,否则会出现乱码。
文本文件就是字节序列,可以是任意编码的字节序列。如果在中文机器上,直接创建文本文件,该文本文件只认识ANSI编码
public static void main(String[] args) throws IOException, IOException { String file = "demo/obj.txt"; //1. 对象序列化 ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(file)); StudentDemo st = new StudentDemo("aaa", "12", 15); oos.writeObject(st); oos.flush(); oos.close(); //2.反序列化 ObjectInputStream pis = new ObjectInputStream( new FileInputStream(file)); try { StudentDemo stu = (StudentDemo) pis.readObject(); System.out.println(stu); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } pis.close(); }
View Code
transient 修饰后,不会进行虚拟机默认的序列化;也可以自己完成这个元素的序列化
为什么要使用transient关键字呢?
分析ArrayList的序列化与反序列化:实质是一个数组,但是这个数组并不一定放满了,因此我们不需要讲后面没有使用的地方进行序列化,可以根据自己的需要定制序列化,只是序列化数组中的有效元素,提高性能。
序列化中子父类构造函数调用问题
一个类实现了序列化接口,其子类都可以进行序列化
对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用;反之不会。
相关文章推荐
- Java创建新文件的同时创建相应目录
- java基础
- Java标识符
- 使用jad批量将class反编译为java时出现阻塞--解决办法
- Struts2上传和下载 commons-fileupload-1.2.1.jar
- java基本语法
- Java中的初始化顺序
- java基础语法
- Java 中 & 和 && 的区别
- JAVA实训之封装
- 38.JAVA编程思想——JAVA IO 对象序列化
- 37.JAVA编程思想——JAVA IO 压缩
- 36.JAVA编程思想——JAVA IO Java 1.1 的 IO 流
- 35.JAVA编程思想——JAVA IO StreamTokenizer
- 34.JAVA编程思想——JAVA IO 流典型应用
- 33.JAVA编程思想——JAVA IO File类
- 32.JAVA编程思想——JAVA IO添加属性和接口
- Java 序列化Serializable详解
- 31.JAVA编程思想——JAVA IO系统输入和输出
- 异常