学习总结 Day07 集合 Set集合的特点: 元素无序;(存储和读取的顺序可能不一样) 元素不允许重复(要求元素唯一); 没有索引 Collection 接口 Collections 工具类 提供工具方法: Collections shuffle : 随机打乱顺序 Collections sort : 自然顺序排列 HashMap 集合: Map 和 Collection 有什么区别: Map:是一个双列集合,用于处理有对应关系的数据,健不能重复无序 Collection : 是单列集合,有不同的子体系,有的允许重复且有序(List),有的不允许重复且无序(Set) Map的两种遍历方式: 1. 获取所有key map.keySet()方法 通过key 找value map.get(key) 2. 返回Set集合 map.entrySet()方法 Day08 异常 异常:不正常,我们在写代码的时候出现的编译或者运行时的错误 异常的处理方式: 捕获处理: try..catch 语句. try{ 有可能出现问题的代码 }catch(ArithmeticException e){ 处理异常 } 递归:方法本身不断调用自己 递归注意事项: 递归一定要有出口, 内存溢出 递归次数不宜过多, 内存溢出 Day09 IO流 File 类 File 的重要获取功能: String[] list() String[] files = f.list() 获取当前路径下的所有文件或目录的数组 File[] listFiles() File[] files = f.listFiles() 获取当前目录下的所有文件或目录的File对象的数组 statci File[] listRoots() File[] files = f.listRoots() 获取系统所有盘符 的File对象数组 IO字节流 和 IO字符流 流向: 输入流 读取数据 FileReader Reader 输出流 写出数据 FileWriter Writer 数据类型: 字节流(任意) 字节输入流 读取数据 InputStream 字节输出流 写出数据 OutputStream 字符流(文本) 字符输入流 读取数据 Reader 字符输出流 写出数据 Writer Day 10 IO流 转换流 OutputStreamWriter 字符输出流 字节 转 字符 ItputStreamReader 字符输入流 字节 转 字符 打印流: 只能输出不能输入 PrintStream PrintWriter
对象操作流:可以用于读写任意类型的对象 ObjectInputStream readObject 读对象 ObjectOutputStrem writeObject 写对象 ObjectOutputStrem(OutputStream out) <Properties集合>:双列集合 构造方法: properties() 创建属性列表对象: Properties p = new Properties(); 添加 put p.setProperty() 存入键值对 p.list() 存入 与 IO流结合: 读 load (Reader) 读 写 list (Write) 只能接收打印流 写 store (Write) Day 11 多线程 单线程:安全性高,效率低 多线程:安全性低,效率高
多线程 实现方式一:将类声明为 Thread 的子类,该子类重写Thread类的 run 方法.继承 多线程 实现方式二: 实现 implement 实现Runnable 接口 重写 run 方法 void run(); 定义一个类实现Runnable接口 重写 run方法 创建 Thread 对象 Runnable 对象 传进去
Thread.currentThread().getName() 通过静态方法获取线程对象 异常捕获 sleep synchronized : 同步, 解决问题之一 同步代码块: synchronized(锁对象){ } 注意: 锁对象需要被所有的线程共享 同步: 安全性高,效率低; 非同步:效率高,安全性低 解决问题之二 同步方法: 同步方法: 使用关键字synchronized 修饰的方法,一旦被一个线程访问,则直接被锁住 非静态同步方法的对象是 this 静态同步方法的对象是当前类的字节码对象 Day 12 网络编程 网络通信三要素: IP地址 / 端口号 / 通信协议(TCP UDP) TCP 有链接 安全 效率低 UDP 无连接 打包数据传输 不安全 效率高 使用UDP 发送数据步骤: 1. 为发送端创建Socket对象(DatagramSocket) 2. 创建数据并打包: 3. 发送数据: 4. 释放资源. 使用UDP 接收数据步骤: 创建接收端Socket对象 接收数据 receive 解析数据 输出数据 释放资源 使用TCP发送数据步骤: 1. 创建发送端 Socket对象 2. 获取输出流对象 3. 发送数据 4. 释放资源 使用TCP接收数据步骤: 1. 创建接收端Socket对象 2. 监听阻塞() Socket s = ss.accept(); 3. 获取输入流对象 4. 获取数据 5. 输出数据 6. 释放资源 Day13 反射 反射: 在运行时,可以获取任意一个类的所有方法和属性 在运行时,可以调用任意一个对象的所有方法和属性 反射的前提: 首先,获取类的字节码对象(Class对象), 获取字节码对象三种方式 1. Object 的 getClass()方法获取字节码对象 2. 通过类名.class 获取字节码对象 3. Class的静态方法 class.forName(“类的全名”) 通过反射获取构造方法: 1.Constructor[] = .getConstructors():获取所有public修饰的构造方法 2.Constructor = .getConstructor(xx.class,yy.class): 根据参数列表返回所有构造方法 Object obj = .newInstance(~~) 通过 newInstance方法创建对象 通过反射获取成员变量的方法: Field[] = .getFields():获取所有public的成员变量 Field[] = .getDeclaredFields(): 所有 Field = .getField(String name):根据字段名称获取公共public的字段对象 static void populate (bean , Map Properties) 批量给对象属性赋值
|