2022-08-08 第八组 常竞文 IO流

JUnit单元测试

JUnit是一个Java语言单元测试框架。

JUnit单元测试的好处

  1. 可以书写一系列的测试方法,对项目的所有的接口或者方法进行单元测试
  2. 启动后,自动化的测试
  3. 只需要查看最后的结果
  4. 每个单元测试的用例相对独立,由JUnit启动。
  5. 添加、删除、屏蔽测试方法

Jar包

如果要引入第三方的插件,引入xxx.jar的文件

首先,要把这个文件导入到我们的工程目录下

其次,要添加到工程的依赖目录中

 @Test
    public void test01(){
        System.out.println("hello junit");
    }

测试方法:(除了方法名什么都不要动)

  1. 不能有返回值
  2. 不能有参数

JUnit断言

JUnit的所有的断言都包含在Assert中,这个类提供了很多有用的断言来编写测试用例,只有失败的断言才会被记录,断言不成功会抛异常,即使程序正常运行但是结果不正确,也会以失败结束

  1. assertEquals;检查两个变量或等式是否平衡
  2. assertTrue:检查条件是否为真
  3. assertFalse:检查条件是否为假
  4. assertNotnull:检查对象是否不为空
  5. assertNull:检查对象是否为空
    public class Ch02 {
    
        @Test
        public void test01() {
            Assert.assertTrue(false);
        }
    }
    

JUnit注解

  1. Test
  2. Before:在测试方法之前执行的方法
  3. After

命名规范:

单元测试类的命名:被测试的类名 + Test

测试方法的命名:test + 被测试方法的方法名

 @Test
    public void test01() {
        System.out.println("test01方法执行...");
    }
 @Before
    public void testBefore(){
        System.out.println("before方法执行...");
    }

    @After
    public void testAfter() {
        System.out.println("after方法执行...");
    }

集合的好多面试题:

  1. Hashtable和ConcurrentHashMap性能测试
  2. LinkedList和ArrayList性能测试

数组查询快,插入慢,链表插入快,查询慢

  1. 尾插数组快,链表慢
  2. 遍历数组快
  3. 头插,链表快,数组慢
  4. 随机删除,如果要过滤,建议用LinkedList

总结:开发中,还是以arrayList为主

Stream编程(JDK8新增)

容器对象功能的增强

我们可以将流看做流水线,这个流水线是处理数据的流水线;

三个步骤

  1. 获取一个数据源
  2. 执行操作获取想要的结果
  3. 每次操作,原有的流对象不改变,返回一个新的Stream对象

Stream的几个对象

  1. Stream不会储存数据,一般会输出结果
  2. Stream不会改变数据源,通常情况下会生成一个新的集合
  3. Stream具有延迟执行的特性,只有调用终端操作时,中间操作才会执行

创建流

创建一个顺序流和一个并行流 

  List<String> list = Arrays.asList("a","b","c");
        // 创建一个顺序流
        Stream<String> stream = list.stream();
        // 创建一个并行流
        Stream<String> parallelStream = list.parallelStream();

 双冒号语法

引用已经存在的方法值

  // 打印集合元素
        // 双冒号语法,方法引用
        simpleList.stream().forEach(System.out::println);
        // 其实还可以简化操作
        simpleList.forEach(System.out::println);

 筛选filter(必须会)

simpleList.stream().filter(item -> item > 17).forEach(System.out::println);

筛选并存入新的集合 


        // 筛选员工中工资大于8000的人,并形成新的集合
        List<Person> collect = personList
                .stream()
                .filter(item -> item.getSalary() > 5000)
                .collect(Collectors.toList());
        System.out.println(collect);

 映射(重要)

将一个流的元素按照一定的映射规则映射到另一个流中

 将员工的工资全部增加1000
        personList
                .stream().map(item -> {
            item.setSalary(item.getSalary() + 1000);
            return item;
       }).forEach(System.out::println);

排序sorted 

自然排序(升序)

 List<String> collect = personList.stream()
                .sorted(Comparator.comparing(Person::getSalary))
                .map(Person::getName)
                .collect(Collectors.toList());
        System.out.println(collect);

临时排序(降序)

// 按照员工工资的降序
        List<String> collect1 = personList
                .stream()
                .sorted(Comparator.comparing(Person::getSalary).reversed())
                .map(Person::getName)
                .collect(Collectors.toList());
        System.out.println(collect1);

其他操作:

distinct:去重

Skip:跳过几个数据

Limit:限制使用几个数据

Java IO流---对于文件的操作

 Input:把数据从物理内存加载到运行内存(读文件)

Output:把数据从运行内存写到物理内存(写文件)

Java.io包下的类

计算机的输入输出都是通过二进制完成

0和1

工具类:File操作文件的类

正斜杠:左斜杠,/

反斜杠:右斜杠,\

在Unix/Linux,路径的分隔采用正斜杠/

在window中,路径分隔采用反斜杠\

在java中,\代表转义,路径中一定要用两个\\

 System.out.println("\t");
        System.out.println("E:\\");
        System.out.println("E:/workspace");

 在File类中,定义了路径分隔符的常量,自动识别操作系统

   System.out.println(File.separator);
        System.out.println("e:" + File.separator + "workspace");

 文件的操作

创建一个文件,要抛异常,可能不存在e盘

新建文件不会覆盖已有的文件

   // 创建一个文件
        File file1 = new File("e:\\aaa.txt");
        try {
            file1.createNewFile();
            System.out.println("文件创建成功...");
        } catch (IOException e) {
            e.printStackTrace();
        }

 删除文件:不用抛异常,如果存在就删除,如果不存在就算了,有返回值,不走回收站

  File file = new File("e:\\aaa.txt");
        // 如果存在就删除,如果不存在就拉倒
        // file类的删除是不走回收站
        boolean delete = file.delete();
        System.out.println(delete);

 文件夹(目录)

创建文件夹

mkdir只能创建一级,mkdirs能创建多级文件夹,尽量用mkdirs

 File file = new File("e:/hello");

       boolean mkdir = file.mkdir();
  boolean b = file.mkdirs();

 删除文件

 file.delete();

 判断文件是否存在

System.out.println(file.exists());

绝对路径和相对路径

绝对路径:已盘符开头

相对路径:没有指定的盘符开头,会创建到当前项目所在盘下

 File file = new File("e:/aaa.txt");
        File file2 = new File("E:\\idea");

功能 

1、获取绝对路径和相对路径,返回值是字符串

2、获取对象 获取相应的相对路径的那个对象

3、获取上一级路径

 

4、获取路径getpath

5、最后一次修改时间LastModified

获取字节长度

重命名

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值