黑马程序员技术交流社区

标题: 学习总结 [打印本页]

作者: TISHIHANG    时间: 2018-1-4 17:10
标题: 学习总结
学习总结
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) 批量给对象属性赋值






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2