JAVASE笔记打印版

上传人:仙*** 文档编号:34645330 上传时间:2021-10-22 格式:DOC 页数:29 大小:184KB
收藏 版权申诉 举报 下载
JAVASE笔记打印版_第1页
第1页 / 共29页
JAVASE笔记打印版_第2页
第2页 / 共29页
JAVASE笔记打印版_第3页
第3页 / 共29页
资源描述:

《JAVASE笔记打印版》由会员分享,可在线阅读,更多相关《JAVASE笔记打印版(29页珍藏版)》请在装配图网上搜索。

1、se1_day0204_note知识要点: 1 StringBuilder 和 StringBuffer String, StringBuffer,StringBuilder的区别-面试经常问 2 时间日期-重点 3 java中的包装类(8种) Integer Charater 4 集合-重点之重 5 集合的迭代Iterator (遍历算法) 6 Collections 集合的工具类 7 比较大小 8 数组与集合的转换=1 StringBuilder 和 StringBuffer=1 StringBuilder 和 StringBuffer String = char + 操作(复制创建新对象

2、) StringBuilder=char + 对char操作(处理当前数组内容) StringBuilder 内部的char数组内容可变, 如果长度 不够, 利用变长算法维护, 自动扩容长度. 1) StringBuilder 是变长字符序列 2) StringBuilder 方法:append,insert . 都返回 当前 StringBuilder 对象本身的引用。 3) 如果软件需要大量字符串处理时候建议使用StringBuilder A + B 4) String s = s1+s2; Java实际上才是如下代码运行: String s=new StringBuilder(s1).a

3、ppend(s2).toString(); String s = s1+s2+s3+s4; 被优化为 String s = new StringBuilder(s1).append(s2).append(s3).append(s4).toString(); s+=a;/会产生两个新对象(StringBuilder, String) s = s+a; StringBuilder buf=new StringBuilder(); buf.append(a); buf.append(a); 5) StringBuffer 和 StringBuilder API几乎一样! F安全 B不安全 Strin

4、gBuffer 是java早期提供的,速度稍慢,线程安全 StringBuilder 是Java5 以后提供的,速度快,非线程安全char String StringBuilder 都可以表示字符串String StringBuilder 的底层就是一个char char 代表字符串数据 没有操作String = char + 操作(API方法)经常复制新对象(原对象不变)读取StringBuilder = char + 操作是更新数组内容, 改动快char String StringBuilder(1.5) =? StringBuffer(1.0) 非线程安全 非同步 线程安全 同步 总结:

5、String, StringBuffer StringBuilder的区别。!String是长度不可变的字符串。StringBuffer是长度可变的字符串,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。它是线程安全的。StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。F安全 D不安全=2 时间日期

6、=2 时间日期 时间的标准: (1970)GMT long (0)UTC long 时间类的本质: Date = long + 操作 Calendar = long + 操作 1) java 中基本的时间表示 GMT long 2) Java提供了Date类型表示时间和日期 Date 是long类型的包装 3) Calendar 是历法的的抽象. 历法: 公历, 农历, 太阳历, . GregorianCalendar 是历法的实现, 采用公历 (太阳历) 算法实现的. Calender cal = Calender.getInstance(); 4) Date 和 Calendar 的默认值

7、就是当前时间 5) 时间的类型转换 new Date(long) date.setTime(long) cal.setTime(Date); - - long - Date int Integer.parstInt(String, int) 2.718 - 2.718 Double.parseDouble(String str); 自动包装(auto boxing / unboxing)(java5 以后可以): Integer i = 2;/ i=new Integer(2); Object o = 3.5; System.out.println(o instanceof Double);

8、/true int a = i+1;/ a = i.intValue() + 1; 注意 1 包装类是final的类 2 包装类对象是不变的, 与字符串类似(不变模式) Integer a = 1; Integer b = 2; a = a+b; /a = new Integer(a.intValue() + b.intValue() 3 包装类覆盖了 toString equals hashCode compareTo =4 集合=4 集合 集合框架:collection 包括以下 可以看图List接口:ArrayList LinkedList VectorSet接口:HashSet:key

9、 SortedSet 接口TreeSetMap接口:HashMap:(键值树)key-value SortedMap接口:TreeMap4 线性表: List, 表示有先后次序的对象集合, 歌曲列表 ArrayList = Object + 线性表操作(增删改查) StringBuilder = char + 操作(增删改查) ArrayList(1.2以后新的) 是使用变长数组算法实现的 List (线性表方法) Vector(1.0) 是使用变长数组算法实现是 List 矢量 向量 LinkedList 是采用双向循环链表实现的List List 集合的实现 1 LinkedList 采用

10、双向循环链表实现 2 ArrayList 变长数组算法实现 新的 快 非线程安全 3 Vector 变长数组算法实现 早期提供 慢 线程安全 4 Java泛型简介 1) Java5 以后提出的语法现象, 在编译期间期检查的类型约束. 运行期不检查泛型! 2) 可以用来约束类中元素的类型 =5 集合的迭代Iterator(遍历算法)=5 集合的迭代Iterator(遍历算法)(模仿了数鸡蛋的方式) 1) 迭代操作: 播放列表 的 全部播放 2) java使用Iterator 接口描述了迭代模式操作 Iterator 中的方法模式化设计, 专门配合while循环操作 3) Iterator 的实例

11、可以从集合对象获得, 是这个集合的一个元素序列 视图, 默认包含一个操作游标, 在第一个元素之前, hasNext() 方法 可以检查游标是否有下一个元素, next() 方法移动游标到下一个元素 并且返回这个元素引用. 使用while配合这个两个方法, 可以迭代处理 集合的所有元素 4) 迭代时候可以使用迭代器remove() 方法删除刚刚迭代的元素 在迭代过程中, 不能使用集合方法(add, remove, set) 更改集合 元素=6 Collections 集合的工具类=6 Collections 集合的工具类, Arrays 数组的工具类 1) 排序, 二分查找, 打乱, 填充等操作

12、 =7 比较大小=7 比较大小 1) Comparable 可以比较的 用于类实现, 实现这个接口表示: 这个 类的实例可以比较大小的. 可以进行自然排序. Comparable 的实现必须与equals() 的结果一致, 就是相等的对象比较结果一定 是0! 2) Comparator 比较工具, 用于临时定义比较规则, 不是默认比较 规则 =8 数组与集合的转换=8 数组与集合的转换 a 数组转List(只读的) String names = A,B,C; List list = Arrays.asList(names);/只读list list = new ArrayList(list);

13、/复制为全功能List Set set = new HashSet(list);/复制为Set集合 b 集合转数组 Object ary1 = list.toArray();/集合转Object String ary2 = (String) list.toArray(new String);/集合转制定类型数组 se2_day01_note知识要点: 1 异常(Exception) 2 Java java.io.File 文件系统管理 (pwd ls mkdir rm ) =1 异常(Exception)=1 异常(Exception) 1) 行为(方法, 过程)的意外结果 2) 一个方法如果

14、抛出了异常,这个方法就必须声明异常的抛出. 异常的声明:在方法上声明方法的意外结果,如: User reg( String pwd, String email) throws UserExistException; User login(String email, String pwd) throws NameOrPwdException; 3) 异常类一般继承于Exception 4) 调用抛出异常的方法,必须处理异常 4.1 使用try catch finally 捕获 4.2 直接再抛出异常 处理方式,依赖于具体业务逻辑,很灵活。 5) 如果代码有异常发生,异常以后的代码将不再执行。 6

15、) try catch finally try 是尝试运程代码块,如果有异常会被随后的catch捕获 异常发生以后代码不执行 catch代码块是异常处理代码。需要提供合理的处理,异常的处理 是与具体业务逻辑有关。可以写多个catch处理一系列异常,但是 要注意:异常的大小关系,大类型的放到后面处理。 有的时候 catch(Exception) 粗粒度处理异常,代码简洁 语义含糊. 根据业务逻辑适当选用。finally不一定都会执行,在不终止JVM的情况下,finally中的代码一定会执行。 finally 代码块,不管是否出现异常,总会执行的代码块。 经常用来处理现场的清理,比如:可靠的数据库

16、连接关闭。总结: 1) 先执行try代码块 2) 如果没有异常不执行catch代码块 3) 如有异常, 异常顺序被catch捕获. 捕获了就被消耗掉 4) catch块异常中, 小类型异常需要放到前面 5) finally 代码最后总是被执行. 7 异常有一个基本原则:能够底层处理的尽量处理,但是 如果不能处理,必须抛出到调用者(方法)。不应该简单的 抛弃。 8 异常捕获再抛出, 是一种把底层异常进行封装,转换为另外 一种异常类型。 9 *建议在捕获到异常时候使用e.printStackTrace(),打印到 控制台,输出内容是:出现异常时候的方法调用堆栈. 一般情况下,凡是捕获异常代码都输出

17、:e.printStackTrace() 10 异常的分类 Throwable |-Error 是系统不可恢复的错误,由JVM发生 | |-OutOfMemoryError 堆内存溢出 | |-StackOverflowError 栈内存溢出 |-Exception 程序可以检查处理的异常,常见的异常继承根 |-java.text.ParseException format解析对象时候发生 | 如:Date d = dateformat.parse(2010-5-5); |-RuntimeException 非检查异常,Javac忽略对 | 这类异常的语法检查,如:异常抛出,异常处理等。 |-

18、IllegalArgumentException |-NullPointerException */空指针异常 |-ArrayIndexOutOfBoundsException */数组下标越界异常 |-ClassCastException */类造型异常 |-NumberFormatException * /数字格式异常 例如:Integer.parseInt(S) 11 软件中会大量使用自定义异常,一般从Exception继承。 异常类命名要有实际意义, 一般都手工继承父类的构造器。自定义异常格式:class 自定义异常类名 extends Exception/自定义异常应该实现全部父类的

19、构造器java中throw与throws区别throws是用来声明一个方法可能抛出的所有异常信息,throw则是指抛出的一个具体的异常类型。此外throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。详细介绍: throws:用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常(其实就是,不想自己处理,那就交给别人吧,告诉别人我会出现什么异常,报自己的错,让别人处理去吧)。格式是:方法名(参数)throws 异常类1,异常类2,.throw:就是自己进行异常处理,是抛出一个异常的实例,处理的

20、时候有两种方式,要么自己捕获异常(也就是try catch进行捕捉),要么声明抛出一个异常(就是throws 异常)。注意:throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行,而且所在的方法不再返回有意义的值!=2 Java java.io.File 文件系统管理 (pwd ls mkdir rm )=2 Java java.io.File 文件系统管理 (pwd ls mkdir rm ) 1) File类的用途: 用于表示文件(目录); 只用于表示文件(目录)的信息(名称,大小等)不能对文件的内容进行访问 File 代表文件系统中对文件/目录的管理操作 (增删改查,

21、 CRUD) 2) java.io.File基本API File(String)/实例化对象,但是并没在文件系统创建目录或文件需要new long length()/文件大小的长度long lastModified()/文件最后一次修改时间String getName()/获取目录或者文件名字String getPath()/获取相对路径名String getCanonicalPath() /获取标准绝对路径名boolean exists()/文件或目录是否存在boolean dir.isFile()/是不是文件boolean dir.isDirectory()/是不是目录(目录=文件夹)bo

22、olean mkdir()/创建一个目录-create目录boolean mkdirs()/创建一个目录及其子项目录-创建一个目录及其子项目录boolean delete();/删除文件或目录-deleteboolean createNewFile() throw IOException/创建一个文件-create文件File listFile()/列出给定目录下所有子项-list boolean renameTo(File dest) /重新命名此抽象路径名表示的文件。 -updatese2_day0203_note知识要点:主要io流 1 回调模式和FileFilter 2 RandomA

23、ccessFile 操作文件内容, 访问文件任意位置 3 序列化与基本类型序列化 4 字符串的序列化(文字的编码方案) 5 认识文本和文本文件 6 Java IO 总结 1) IO流 (InputStream, OutputStream) 2) 文件输入流 FileInputStream 继承了InputStream 3) 文件输出流 FileOutputStream 继承了OutputStream 4) DataOutputStream 对基本的输出流功能扩展, 提供了基本数据 5) DataInputStream 对基本的输入流(InputStream)功能扩展,提供基本类型的输入方法 6

24、) BufferedInputStream 和 BufferedOutputStream 7) 文件复制实现与优化 8) 字符流(Reader Writer) 7 对象的序列化: 将Object转换为byte序列,就是序列化,反之叫反序列化 8 浅层复制与深层复制=1 回调模式和FileFilter =1 回调模式和FileFilter File listFile(FileFilter) 案例: import java.io.File;import java.io.FileFilter;/* * 文件过滤器 * 用于在获取某个目录下的子项时筛选出符合条件的子项 */public class D

25、emoFileFilter public static void main(String args) /* * 定义一个文件过滤器,用于过滤.java文件 */FileFilter filter = new FileFilter()/* * accept方法是用来定义过滤条件的 * 参数pathname是将被过滤的目录中的每个子项依次 * 传入进行匹配 * 若我们认为该子项满足条件则返回true。 */public boolean accept(File pathname) /保留文件名以.java结尾的 return pathname.getName().endsWith(.java); ;

26、/创建一个目录File dir = new File(.);/获取所有子项/File sub = dir.listFiles();/获取过滤器中满足条件的子项File sub = dir.listFiles(filter);/回调模式for(File file:sub)System.out.println(file);=2 RandomAccessFile操作文件内容, 访问文件任意位置=2 RandomAccessFile 操作文件内容, 访问文件任意位置 1)Java 文件模型, 文件是byte by byte 是数据集合 data : 41 42 00 00 00 ff d6 d0 .

27、index : 0 1 2 3 4 5 6 7 8 pointer: 2) 打开文件, 有两种模式 rw, r RandomAccessFile raf = new RandomAccessFile(file, rw); 打开文件时候默认文件指针在开头 pointer=0 自动移动到下一个位置, 准备再次写入 * 文件名的扩展名要明确指定, 没有默认扩展名现象! RandomAccessFile读取数据的方法: int read():读取一个字节,返回值位读取的数据,若为-1代表读取到文件末尾 (EOF end of file) int read(byte buf): 尝试一次性读取给定的数组

28、长度的字节数,并存 入该数组,但实际读取的字节数要以是否达到文件 末尾为准. 返回值为:总共读取的字节数,若为-1代表EOF raf.length()返回一个long值,代表当前文件的总字节数 int readInt() 从此文件读取一个有符号的 32 位整数。 long readLong();从此文件读取一个有符号的 64 位整数。 String readUTF(); 从此文件读取一个字符串。写数据的方法: void write(byte b) 将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 void write(byte b, int off, in

29、t len) 注:len - 要写入的字节数。 将 len 个字节从指定 byte 数组写入到此文件,并从偏移量 off 处开始。 void write(int b) 向此文件写入指定的字节。 void writeInt(int v)按四个字节将 int 写入该文件,先写高字节。 void writeLong(long v) 按八个字节将 long 写入该文件,先写高字节。 void writeUTF(String str) 使用 modified UTF-8 编码以与机器无关的方式将一个字符串写入该文件。 =3 序列化与基本类型序列化= int - 4 byte long - 8 byte

30、序列化: 将数据转换为 n个byte序列叫序列化: 数据 - n byte 如: 0x7fffffff - 7f ff ff ff 反序列化: 将n byte 转换为一个数据的过程 : n byte - 数据 如: 7f ff ff ff - 0x7fffffff RandomAccessFile 提供 基本类型 的读写方法 可以将基本类型序列化到文件 和 反序列化为数据=4 字符串的序列化(文字的编码方案)=4 字符串的序列化(文字的编码方案) 1) String 字符串本质上是char 将char 转换成byte序列 就是字符串的编码, 就是字符串的序列化问题 char是16位无符号整数,

31、 值是unicode编码 str.getBytes(GBK) new String(byte, gbk) byte 流 2) utf-16be 编码方案, 将16位char从中间切开为2个byte utf-16be 是 将unicode char 序列化为byte 的编码方案 能够支持65535 个字符编码, 英文浪费空间 char = A,B,中 utf16be = 00, 41, 00, 42, 4e, 2d 3) UTF-8 编码方案 采用变长编码 1N方案, 其中英文1个byte 中文3个byte char = A,B,中 utf8 = 41 42 e4 b8 ad utf-8: 是将

32、unicode 编码为 byte 序列的方案中: 4e2d = 01001110 00101101 e4 b8 ad = 11100100 10111000 10101101 1110XXXX 10XXXXXX 10XXXXXX 以0为开头的是 英文!(0127) 110 表示连续2字节表示一个字符 1110 表示连续3字节表示一个字符 11110 表示连续4字节表示一个字符 每个数据字节以 10开头 4) GBK 中国国标,支持20000+ 中日韩英, 英文一位编码, 中2位 与unicode不兼容, 需要码表转换(散列表查询) char = A,B,中 /4e2d GBK(GB2312):

33、 41,42,d6,d0,=5 认识文本和文本文件 =5 认识文本和文本文件 1) java的文本(char)是16位无符号整数, 是字符的unicode编码 2) 文件是byte by byte 的数据序列 3) 文本文件是 文本char 序列按照某种(utf-8, utf-16be, gbk) 方案序列化为byte, 的存储结果.=6 Java IO 总结=6 Java IO 总结 1)是一种数据操作模型: 把任何数据都作为Byte的有序集合看待 逐一处理的方式方式叫做流. Java 流模型, 是byte by byte 是数据集合 data : 41 42 00 00 ff ff d6

34、d0 index : 0 1 2 3 4 5 6 7 8 pointer: 节点流: 流开始和结束的地方 过滤器: 基本流的功能扩展 字节流: 每次处理一个byte 字符流: 每次出来一个char 装饰器模式: 流的API是按照装饰器模式设计的 InputStream 最基本的输入流操作模型, 是抽象类(read()是没有实现的) |- FileInputStream 实现了在文件上读取的方法 read(), 节点流 |- ByteArrayInputStream 实现了在数组里读取的方法 read() |- FilterInputStream 过滤流,包装在一个基本流外部,提供功能扩展 |

35、|- DataInputStream 为基本流扩展了基本数据类型读取 | | readInt() readDouble().方法的底层是read() | |- BufferedInputStream 为基本流提供缓冲处理 | |- CipherInputStream 解密输入流, 知道就行 | |- ZipInputStream 解压输入流, 知道就行 |- ObjectInputStream 对象输入流, 也是过滤器 OutputStream 最基本的输出流操作模型,是抽象类(write()是没有实现的) |- FileOutputStream 实现了在文件上写出的方法 write(), 节

36、点流 |- ByteArrayOutputStream 在变长数组上实现了write() 方法 |- FilterOutputStream | |- DataOutputStream 基本类型输出 | | | |- BufferedOutputStream 缓冲输出 | |- CipherOutputStream 加密输出 | |- ZipOutputStream 压缩输出 |- ObjectOutputStream 对象输出流 字符流, 每次处理一个字符 Reader 抽象类, 定义了抽象方法read(), 每次读取一个字符 |- InputStreamReader 也是过滤器, 将byte

37、序列解码为char序列 | 底层也是依赖基本的byte输入流 |- BufferedReader (Scanner) 是字符流过滤器, | 有常用的文本读取方法readLine() |- FileReader 底层是 FileInputSream + InputStreamReader | 不能指定读取文件的字符编码 Writer 抽象类, 定义抽象方法write() 每次写出一个字符 |- OutputStreamWriter 也是过滤器, 将char序列编码为byte序列 | 底层也是依赖基本的byte输出流 |- PrintWriter 是过滤器, 提供了常用方法println() |

38、非常常见的文本处理方法 |- FileWriter = OutputStreamWriter + FileOutputStream | 不能指定文本输出编码, 不好用!详细介绍知识点: =1) IO流 (InputStream, OutputStream)=1) IO流 (InputStream, OutputStream) InputStream, OutputStream 都是抽象类 InputStream 抽象了应用程序读取数据的方式 OutputStream 抽象类应用程序写出数据的方式 EOF = End of File = -1 输入流基本方法: int b = in.read()

39、 读取一个byte 无符号填充到int低八位,-1是EOF in.read(byte buf) 读取数据填充到buf中 in.read(byte buf, int start, int size)读取数据填充到buf中 in.skip(long n) in.close(); 输出流的基本方法: out.write(int b) 写出一个byte到流 b的低八位写出 out.write(byte buf) 将缓冲区buf都写入到流 out.write(byte buf, int start, int size)将buf的一部分 写到流中. out.flush() 清理缓冲 out.close()

40、; InputStream OutputStream 文件(Byte 序列) -输入流- 应用程序 -输出流- 文件(Byte) in.read() out.write() =2)文件输入流 FileInputStream 继承了InputStream= FileInputStream 具体实现了在文件上读取数据 =3) 文件输出流 FileOutputStream 继承了OutputStream= FileOutputStream 实现了向文件中写出byte数据的方法=4) DataOutputStream =4) DataOutputStream 对基本的输出流功能扩展, 提供了基本数据

41、类型的输出方法, 也就是基本类型是序列化方法 writeInt() writeDouble() 是过滤器 DOS FOS 应用程序 - 过滤器 -输出流- 文件(Byte) writeInt(i) write() ff ff ff fd=5)DataInputStream =5) DataInputStream 对基本的输入流(InputStream)功能扩展, 提供基本类型的输入方法, 就是基本类型的反序列化 DataInputStream 是过滤器, 只是功能扩展, 不能直接读取文件 readInt() readDouble() . FIS DIS dis.readInt() 文件(Byt

42、e 序列)-输入流- 过滤器- 应用程序 7f ff ff ff read() readInt() 0x7fffffff =6 BufferedInputStream 和BufferedOutputStream= 一般打开(in/out)文件, 都加上缓冲流, 提高IO性能-缓冲输入流输出流BufferedInputStream BufferedOutputStream为读写操作提供缓冲,以加快读写效率提高性能注意:缓冲流因为不是每次写出数据都立刻将数据写出,而是将要 写出的数据放入缓冲区,当缓冲区数据达到缓冲区最大值时 一次性将数据全部写出.基于这个特性,我们经常发现,当 我们将数据通过缓冲

43、输出流写出以后,将流关闭,却发现数据 没有被写到目标位置.这是因为要写出的数据没有填满缓冲区 导致没有发生真实的写出操作.所以,使用缓冲输出流在关闭 流前要调用flush()方法,此方法的作用是将缓冲区内容一次性 写出.FileOutputStream :以字节为单位写出数据DataOutputStream :以基本数据类型所占用的字节为单位写出数据BufferedOutputStream :以缓冲区大小的字节为单位写出数据 DOS BOS FOS 应用程序 - 过滤器-过滤器-输出流- 文件(Byte) writeInt(i) write() write(byte) ff ff ff fd

44、byte FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis); DataInputStream in = new DataInputStream(bis); FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos); DataOutputStream out = new DataOut

45、putStream(bos);=7)文件复制实现与优化= InputStream OutputStream 文件(Byte 序列) -输入流- 应用程序 -输出流- 文件(Byte) in.read() out.write() =8) 字符流(Reader Writer) = 1) 字符的处理, 一次处理一个字符(unicode) 2) 字符的底层仍然是基本的字节流 3) 字符流的基本实现: InputStreamReader:完成byte流解析为char流, 按照编码解析 OutputStreamWriter:提供char流到byte流, 按照编码处理 4) 字符流的过滤器 是字符读写的功能

46、扩展, 极大的方便了文本的读写操作 BufferedReader : readLine() PrintWriter: println() 5)读取一个文本文件:InputStream is = new FileInputStream(gbk.txt);Reader in = new InputStreamReader(is);BufferedReader reader = new BufferedReader(in); orBufferedReader in = new BufferedReader(new FileReader(filename); 6) 写出一个文本文件: PrintWri

47、ter out = new PrintWtirer(new FileWriter(filename); or PrintWriter out = new PrintWtirer( new OutputStreamWriter( new FileOutputStream(filename); 7) 系统的默认编码 中文一般是GBK String encoding=System.getProperty(file.encoding);=7 对象的序列化=7对象的序列化: 将Object转换为byte序列,就是序列化,反之叫反序列化 1) 序列化流, 是过滤流 ObjectOutputStream w

48、riteObject(Object) 序列化对象 ObjectInputStream readObject() 对象的反序列化 2) 序列化接口: 对象必须实现序列化接口才能进行 序列化 否则出现不能序列化的异常! 3) JavaBean 规范, 必须实现Serializable接口 Java API中的类大多是Java Bean, 基本都实现了Serializable= 8 浅层复制与深层复制= 1) Java的默认复制规则是浅层复制, 性能好, 隔离性差 浅层复制现象, 只复制第一层对象 2) 利用序列化实现深层复制se2_day0405_note知识要点: 1 内部类- 定义在类的内部 的类, 根据位置分为4类 -常用匿名内部类 2 Java 多线程编程 概念 3 Java 创建一个线程 4 线程的状态-重点 5 线程状态管理-重点 6 线程的常用属性 7 两种方式创建线程-重点 8 Sleep 的打断唤醒 -重点 9 线程并发安全问题 10 多线程 11 c/s 与 b/s 架构区别 12 Java Socket编程 TCP 协议编程=1 内部类- 定义在类的内部 的类, 根据位置分为4类=内部类应用: 1 当一个类存在价值仅仅是为 某一个类服务

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!