linkList hashSet ArrayList IO 序列化 1.1.瞬态transient .字符编码表 Properties

  Day12 IO  序列化

.递归_递归的概念_注意事项

1.递归:方法的递归调用--它是一种方法调用的方式--方法可以调用其本身

2.注意事项:

1).递归必须要有一个"出口(结束的条件)",否则就是死递归;

2).递归层次不能太深,否则:堆栈溢出异常

3).构造方法不能递归调用。普通方法可以递归调用,编译成功;构造方法如果递归调用,编译错误

class Student(){

public Student(){

this("刘德华");

}

public Student(String s){

this();

}

}

2.Serializable标记接口。该接口给需要序列化的类,提供了一个序列版本号。serialVersionUID. 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。

1.1 3.瞬态关键字transient

当一个类的对象需要被序列化时,某些属性不需要被序列化,这时不需要序列化的属性可以使用关键字transient修饰。只要被transient修饰了,序列化时这个属性就不会被序列化了。

同时静态修饰也不会被序列化,因为序列化是把对象数据进行持久化存储,而静态的属于类加载时的数据,不会被序列化。

4.

Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

特点:

1、Hashtable的子类,map集合中的方法都可以用。

2、该集合没有泛型。键值都是字符串。

3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。

4、有和流技术相结合的方法。

05.IO流_字节输出流FileOutputStream_追加写入和换行

1).追加写入:

FileOutputStream(String name,true):追加写入;

2).输出换行:

out.write("\r\n".getBytes());

5..字符编码表

1.各个国家和一些国际组织都有一些自定义的编码表,用于在计算机上显示各国的文字;

2.最早的编码表:ASCII码表(美国)

3.早期的中文码表:GB2312

4.现在:GBK(是GB2312的升级版)--一个中文占2个字节;【重点了解】

5.国际上:ISO8859-1码表(没有中文)

UTF-8 (包含中文,一个汉字3个字节)   【重点了解】

Unicode(一个字符2两个字节,包含中文)

  1. Big5:包含中文简体 + 繁体 (在*地区使用)

// 获得文件扩展名

String key = fileName.substring(fileName.lastIndexOf(".") + 1);

Day08 linkList hashSet

l 数组,采用该结构的集合,对元素的存取有如下的特点:

n 查找元素快:通过索引,可以快速访问指定位置的元素

n 增删元素慢:

指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原数组元素根据索引,复制到新数组对应索引的位置。如下图

指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复制到新数组对应索引的位置,原数组中指定索引位置元素不复制到新数组中。如下图

linkList hashSet ArrayList IO  序列化 1.1.瞬态transient  .字符编码表  Properties

linkList hashSet ArrayList IO  序列化 1.1.瞬态transient  .字符编码表  Properties

ArrayList的contains方法判断元素是否重复原理

linkList hashSet ArrayList IO  序列化 1.1.瞬态transient  .字符编码表  Properties

ArrayList的contains方法会使用调用方法时,传入的元素的equals方法依次与集合中的旧元素所比较,从而根据返回的布尔值判断是否有重复元素。此时,当ArrayList存放自定义类型时,由于自定义类型在未重写equals方法前,判断是否重复的依据是地址值,所以如果想根据内容判断是否为重复元素,需要重写元素的equals方法。

上一篇:WebGL教程


下一篇:【原】Java学习笔记018 - 面向对象