day013

序列化与反序列化也是流

序列化

是指将
对象的状态信息
转换为
可以存储或传输形式
的过程.


文件A 文件B
±—+ 程序 ±—+
|对象|—> 传输数据 —> |对象|
±—+ 1010101 ±—+


序列化ObjectOutputStream:把对象存到磁盘中(比如文件)

反序列化ObjectInputStream:读取磁盘中序列化的数据,重新恢复成对象

操作主体:对象Object
完成的工作:保存/读取

序列化后,对象写到了文件里,接近乱码是因为方便数据传输
因此也就需要对应的反序列化来还原

如果对同一对象多次序列化到某文件,则会使次文件无法反序列化(不能一条反序列直接把多次序列化的成果逆转)

序列化和反序列化必须一一对应:serialVersionUID(序列化版本UID),序列化与反序列化的UID必须一致才能正常运行.

每次反序列化时,会拿着之前反序列化生成的UID做比较
只有两个UID一致时才能反序列化成功,否则报错:

解决方案1:一次序列化操作要对应一次反序列化操作

解决方案2:将UID写死,无论怎么修改Student类,UID都不变*/
private static final long serialVersionUID = 1L;

必须用多态(尽量示xx匹配尽可能多种类的对象?)

######################################################################

编码转换流 OutputStreamWriter InputStreamReader

UTF-8不是码表,而是Unicode编码表的一种传输格式
(为了解决Uniode英文字符字节量翻倍的问题,提出的一种边长的编码格式)

有些码表可兼容

只要保证:写 和 看 用的是同一张码表,就肯定不会乱码

########################################################################

集合>>>>数组

								《接口》
								
	  【Collections集合根接口】

-----------------------------------extends--------------- || ---------
《接口》
【List】 【Set】              || 【Map】

------------------------ ----implements--------------- || ---------
《类》
【ArrayList】 【LinkedList】 【HashSet】 || 【TreeSet】 【HashMap】 【TreeMap】





反/序列化+泛型




带File-->文件流(只有他能和文件建立直接关系)(接收文件地址,返回文件类对象)
带Buffer-->强化缓冲流(接收文件类对象)

带Object-->对象流(接收文件类对象)




















String s1 = "222";
String s2 = "222";
字面量--->字符串常量池
s1==s2

String s3 = new String("222");

Stirng底层是final char数组,是通过↓来变的

s1+"aa";//底层会默认调用一个
StringBuffer sb = new StringBuffer().append(添加各种类型);
StringBuilder sb1 = new StringBuilder();
所有对字符串的增删改查都是这两个出发












									<String两种创建的不同>

		char[] value = {'a','b','c'};
        String str = new String(value);

        char[] value1 = {'a','b','c'};
        String str1 = new String(value1);

        System.out.println("str1==str:"+(str1==str));               false
        System.out.println("str.equals(str1):"+str.equals(str1));	true



        String value3 ="123";
        String value4 ="123";
        System.out.println("value3==value4:"+(value3==value4));		true,用到了常量池
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值