本帖最后由 小石姐姐 于 2018-1-5 09:31 编辑
IO流---反射 笔记
day9
第一章 File类
File:文件和目录文件下的抽象表达形式。File类的实例是不可变的。
File(String pathname):将一个字符串路径封装成File对象
File(String parent, String child):传入一个父级路径和子类路径。
File(File parent,String child):传入一个File类型的父级路径和子级路径。
File的常用功能:
创建功能:boolean creatNewFile 创建新的文件
boolean mkdir 当指定的单机文件夹不存在时创建文件。
boolean mkdirs当指定的多级文件夹某一级文件夹不存在时,创建多级文件。
删除功能:boolean delete:删除文件或删除单机文件夹。
获取功能:File getAbsoluteFile() :返回当前File对象所有指向的绝对路径
String getAbsolutePath() :返回File对象所指向的绝对路径。
String getParent()获取当前路径的父级路径,以字符串形式返回该父级路径
File getParentFile() 获取当前路径的父级路径,以字File对象形式返回该父级路径
String getName() :获取文件或文件夹的名称
String getPath() 获取File对象中封装的路径
long lastModified():以毫秒值的形式返回最终修改时间。
long length() :返回文件的字节数。
判断功能:boolean exists:判断指定路径的文件或文件夹是否存在
boolean isDirectory:判断当前的目录是否存在
boolean isFile:判断当前路径是否是一个文件
boolean isHidden:判断当前路径是否是隐藏文件
修改名字功能: boolean renameTo(File dest): 将当前File对象所指向的路径
修改为 指定File所指向的路径
绝对路径:固定不可变的路径,以盘符开头。
相对路径:相对某个参照物,不能以盘符开头。
在eclipse中相对路径相对当前项目的根目录。
注意:删除一个文件夹,这个文件夹下面不能有其他的文件或文件夹。
删除指定的目录(包含子目录)
String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
static File[] listRoots():获取计算机中所有的盘符
第2章 字符流与字节流
IO流分类:
流向
输入流: 读取数据
输出流: 写出数据
数据类型:
字节流:字节输入流:
字节输出流:
字符流:
字符输入流:InputStream
字符输出流:OutputStream
标准输出输入流: public static finalInputStram in.用来读取键盘录入的数据
public static final int x;
将数据000.0
list 和store 区别
day10 IO流
第1章标 准输入流 & 转换流 & 打印流
1.1标准输入输出流
public static final InputStream in:标准输入流’
public static final PrintStream out:标准输出流
1.2 OutputStreamWriter:将字节输出流转换为字符输出流
1 .3 InputStreamReader:将字节输入流转换为字符输入流
1.3 打印流
字符打印流 PrintWriter
void print(String str): 输出任意类型的数据,
void println(String str): 输出任意类型的数据,自动写入换行操
第二章 对象操作流
字符打印流 PrintWriter
void print(String str): 输出任意类型的数据,
void println(String str): 输出任意类型的数据,自动写入换行操
第3章 Properties集合
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。
属性列表中每个键及其对应值都是一个字符串。
特点:
1、Hashtable的子类,map集合中的方法都可以用。
2、该集合没有泛型。键值都是字符串。
3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以
存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
4、有和流技术相结合的方法。
Properties和IO流结合的功能:
void load(Reader reader)
void list(PrintWriter out)
void store(Writer writer, String comments)
第四章 编码表
乱码:编码保持前后一致即可解决
day11 多线程
多线程:
线程; thread 进程中的一个执行控制单元,执行路径。
进程:process 一个应用程序在内存中的执行区域。
一个进程可以有多个线程。也可以有一个。
单线程:安全性高,但是效率低。
多线程:安全性低,效率高。
多线程的实现方式:
方式1:一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的
run 方法。接下来可以分配并启动该子类的实例
实现Runnable接口
创建线程的步骤;
定义类实现Runnable接口;
覆盖接口中的run方法;
创建Thread类的对象;
将Runnable接口的子类对象作为参数传递给Thread类的构造函数;
调用Thread类的start方法开启线程;
第三章 多线程安全问题产生及解决方案
安全问题解决
1.使用同步代码块解决;
问题出现的原因:要有多个线程;
要有被多个线程所共享的数据;
多个线程并发的访问共享的数据。
synchronized:同步(锁)可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,
则直接锁住,其他的线程将无法访问
同步代码块:
synchronized(锁对象){
}
注意:锁对象需要被所有的线程所共享
同步:安全性高,效率低
非同步:效率高,但是安全性低
静态的同步方法的锁对象是当前类的字节码对象。
非静态同步方法的锁对象是当前类的字节码对象。
day12
网络通信三要素:
传输协议
IP地址
端口号:
UDP:USER DATAGRAM PROTOCOL, 用户数据报协议.
特点:
无连接的不可靠协议
数据传输大小限制为64K(一个包)
不需要建立连接即可传输
数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据可能有丢包的情况
TCP: TRANSMISSION CONTROL PROTOCOL, 传输控制协议
特点:
需要建立连接的可靠协议
没有数据传输大小的限制
在传输前需要先建立连接(三次握手)
它的重发机制保证了数据传输的准确性, 但因为需要接收方发回验证信息, 所以数据发送时间长, 数据流量大
day13
第一章 反射
1.1.2字节码文件获取的三种方式
1.对象名.getCalss();
2.类名.class
3.Class.forName(“com.itheima_01.Student”)
反射:
在运行时,我们可以获取任意一个类的所有方法和属性
在运行时,让我们调用任意一个对象的所有方法和属性
反射的前提:
要获取类的对象(Class对象)
1.2.1通过获取的构造创建对象
步骤:
1.获得Class对象
2获得构造
3.通过构造对象获得实例化对象
1.3.1反射public成员变量(字段)
通过反射运行public变量流程
1. 通过反射获取该类的字节码对象
Class clazz = Class.forName("com.heima.Person");
2. 创建该类对象
Object p = clazz.newInstance();
3. 获取该类中需要操作的字段(成员变量)
getField(String name) --> 方法传入字段的名称.
注意: 此方法只能获取公共的字段
Field f = clazz.getField("age");
4. 通过字段对象中的方法修改属性值
void set(Object obj, Object value)
f.set(p, 23);
Field[] getFields()--> 返回该类所有(公共)的字段
??Field getField(String name)--> 返回指定名称字段
? Field[] getDeclaredFields()??????--> 暴力反射获取所有字段(包括私有)?
? Field getDeclaredField(String name) --> 暴力反射获取指定名称字段
|
|