A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李松松 中级黑马   /  2018-11-26 15:04  /  874 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李松松 于 2018-11-26 15:09 编辑

day07-10学习日记

day07线程

线程通新概念
多个线程操作共享的资源,每个线程执行的任务不同,需要相互协作,依赖线程间通信
等待唤醒机制
调用wait:1.释放锁                 2.进入WAITING状态
离开WAITING        1.获取锁                2.等待CPU调用执行
wait()
wait(long millis)        
notify()
notify()
函数式编程相对于面向对象的优点
面向对象:注重对象的调用方法(语法格式)
函数式:注重输入什么(参数),得到什么结果(运行代码)
Lamabda表达式格式
(参数列表)->{一段代码}
Lanabda的使用前提
1.lambda只适用于“函数式接口”(有且有一个抽象方法)
2.必须具有上下文的推导


可以省略的部分:
        1. (参数列表): 参数"类型"可以省略 (a, b) -> {}
        2. (参数列表): 如果参数只有1个, 则"类型"和"小括号"都可以省略  a -> sout(a)
        3. {一些代码}: 如果只有一条代码, 则"大括号", "return", "分号"都可以"一起省略"


day08

File对象的创建方式

File(path)

File(parent,child)

File(File parent,child)

dile类获取名称的方法名称

getName()

File类获取对对路径的方法名称

getAbsolutePath()

File类判断是否是文件的方法名称

isFile()

File类判断是否是文件夹的方法名称

isDirectory()

相对路径和绝对路径的区别

绝对路径:以盘符开头

相对路径:不以盘符开头        IDEA相对于项目根目录

遍历文件夹

(File dir)



File[] files = dir.listFiles();

for (File file : files) {

    if (file.isFile()) {

        // 对文件处理

    } else {

        递归调用方法传递file对象

    }

}

递归的含义

代码:方法内部调用方法自己

思想: 大问题, 拆解成不同的小问题, 小问题继续拆解成不同的小问题, 直到小问题都能解决, 大问题也就迎刃而解

递归的方式计算5的阶乘

int jc(int n) {

    if (n == 1) {

        return 1;

    }

    return n * jc(n-1);

}



java.io.FileFilter接口: 用于File对象的过滤器

        boolean accept(File pathName): true则会将参数的File对象加入返回的File[], false则不加入



java.io.FilenameFilter接口:

        boolean accept(File dir, String name): true则会将参数的File对象加入返回的File[], false则不加入



day09

IO流的分类和功能
按操作的数据分
字节流:操作 byte byte[        ]
字符流:操作char char[ ] String
按方向分
输入流;度
输出流:写
使用字节输出流写出数据到文件
字节输出流OutputStream FileOutputStream
1.创建流对象
2.调用write()写数据:一个字节,一个字节数组
3.释放资源close()
使用字节输入流读取数据程序
字节输入流:InputStrram FileInputStream
1.创建流对象
2.调用        read():一次读一个字节        read(byte[ ]bytes)一次读一个字节数组
3.释放资源
读取数组read(byte[ ])方法的原理
byte[] bytes = new byte[2];  文件中有ABCDE
int len;
len = fis.read(bytes); // [A, B]  2
len = fis.read(bytes); // [C, D]  2
len = fis.read(bytes); // [E, D]  1
使用字节流完成文件的复制
1.创建输入输出流对象
2.循环读写
3.释放资源
使用FileWrite写数据的5个方法
write(int ch): 一次写一个字符
write(char[] chs): 一次写一个字符数组
write(char[] chs, int offset, int len): 一次写一个字符数组的一部分
write(String s): 一次写一个字符串
write(String s, int offset, int len): 一次写一个字符串的一部分
FileWrite写数据实现换行和追加写
换行
Windows:“\r\n”
linux:\n
mac:\r
追加写
FileOutputStream fos = new FileOutputStream("路径名", true);
fos.write
Properties的load方法加载文件中的配置信息
1.创建Properties集合对象
2.调用load(流对象)
3.遍历集合


IO流的标准格式:


        FileWriter fw = null;
    try {
        //IO流对象的创建, 操作等代码
        fw = new FileWriter("d:\\09_IOAndProperties\\g.txt", true);
        for (int i = 0; i <10 ; i++) {
            fw.write("HelloWorld"+i+"\r\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        // 释放资源
        if(fw != null){
            try {
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


JDK 7 增加的 "try-with-resource"
        省略了 finally, 可自动释放资源
        // 格式
        try?(创建流对象语句,如果多个,使用';'隔开)?{
                //?读写数据 ???
        }?catch?(IOException?e)?{
                e.printStackTrace(); ???
        }
        
        // 示例
        try?(FileWriter?fw?= new?FileWriter("fw.txt");FileReader fr = new FileReader("fr.txt")) {
                //?IO操作
                int ch = fr.read();
                fw.write(ch);
        }?catch?(IOException?e)?{
                e.printStackTrace();
        }




JDK 9 对于"try-with-resource"的改进:
        流对象的声明和创建可以放在括号外面
        流对象要求是有效final的.(即不要修改流对象的值)


        FileWriter fw = new FileWriter("fw.txt");
    FileReader fr = new FileReader("fr.txt");
    try (fw; fr) {
        //?IO操作
        int ch = fr.read();
        fw.write(ch);
    } catch (IOException e) {
        e.printStackTrace();
    }


day10

字节缓冲流读取数据到程序
BufferedInputStream
new BufferedInputStream(new FileInputStream("..."))
bis.read()
bis.close()
字节缓冲流写出数据到文件
BufferedOutputStream
new BufferedOutputStream(new FileOutputStream("..."))
bos.write()
bos.close()
字符缓冲流的特殊功能
readLine(): 没有换行符, 读到末尾返回null
newLine(): 根据系统自动确定换行符
转换流读取/写入指定编码的文本文件
InputStreamReader                读取
OutputStreamWriter        写入
打印流的特点
1.只有输出
2.不抛出io异常
3.接受任意类型参数,原样输出
序列化流写出对象到文件
ObjectOutputStream
类需要实现Serializable接口, 生成serialVersionUID
反序列化读取文件到程序中
ObjectInputStream
Object readObject()







0 个回复

您需要登录后才可以回帖 登录 | 加入黑马