面向对象高级7

1.File

包:java.io

构造:

  1. File(String path);
  2. File(String parent, String chlid); 一般只会已知父路径的字符串表现形式, 想要找其子路径才会使用
  3. File(File parent, String child);一般只会已知父路径的File表现形式, 想要找其子路径才会使用

路径写法:

绝对路径:从盘符开始路径 c:/

目录分隔符

  • window    /   ,\ (在java中需要成对出现, 因为java的反斜杠是有特殊含义, 成为转义字符, 想要正常反斜杠需要两根)
  • linux  /

相对路径:不是以盘符开头, 在我们java基础File, 相对路径相对于项目的跟目录开始的!!!!!!!

功能:

创建相关

  • boolean createNewFile();  1.只能创建文件不能创建文件夹!!!!!!  一定更要保证文件所在的文件夹存在, 才会创建, 否则会报错: java.io.IOException: 系统找不到指定的路径
  • boolean mkdirs();  创建多级目录  只能创建文件夹,不能创建文件!!!!!
  • 结论: 就是不能通过后缀名来判断是文件还是文件夹!!!!!!!!!!

删除相关

  • void delete();  1.可以删除文件或者文件夹(空文件) 2.删除不走回收站!!!!

获取相关: 

  • String getName();  获取文件名或者文件夹的名字  "c:/a/a/a/aa/a/a.txt"
  • String getAbsolutePath(); 获取绝对路径  带盘符路径

判断相关

  • boolean isFile(); 关联是否是文件
  • boolean isDirectory();  关联是否是文件夹
  • boolean exist();判断关联的路径是否存在!!!!

高级方法

File[] listFiles();

  1. 返回文件夹下一级子目录,以数组形式返回
  2. 文件不能用 非要用, 返回null!!!
  3. 有权限的文件夹不能用(系统严格的文件夹)  非要用, 返回null!!!

2.Stream(流)

作用: 用来简化数组或者集合的操作

如何将数组和集合转成Stream

  1. 集合  集合.stream();
  2. 数组 Stream.of(T ... arr )  用来转引用数据类型的数组  和Arrays.stream(基本类型数组)

功能:

中间方法:方法调用结束后返回的依然是一个Stream对象, 继续可以使用Stream的功能

  1. filter(Predicate<T> pre)   根据用户的条件过滤
  2. limit(long number); 取前几个
  3. skip(long number); 跳过前几个
  4. distinct(); 去重 (底层用的是hashcode以及equals)
  5. static Stream<E> concat(Stream<E> s1, Stream<E> s2); 合并两个流中的元素, 得到新的流

终结方法:方法调用结束后返回的依然不在是一个Stream对象, 不能继续可以使用Stream的功能

  1. void forEach(Predicate<E> pre);
  2. long count(); 流中元素的个数

 收集方法:(不常用,需要自己定义一个集合对象接收)

  • collect(Collectors.toList()); 收集成List集合
  • collect(Collectors.toSet()); 收集成Set集合

注意事项

流对象只能被操作一次, 不能操作多次,否则会出异常!!!!!!

缺点: 没有添加和删除的功能, 想要使用, 需要将Stream在转回成集合

3.自定义泛型

泛型类

作用:  当我们类,方法中,接口中有不确定的数据类型的时候可以使用泛型来描述, 可以让使用者确定数据类型

格式:

public class 类名<MEIJUNJIAN, LINQINGXIA, WANGZUXIAN>{
		private MEIJUNJIAN a;
		private LINQINGXIA b;

}

确定泛型的时机 :创建对象的时候确定 new A<String, String,Integer>()

注意: 泛型如果不确定, jvm默认帮我们确定成Object

泛型不能滥用, 真的有不确定数据类型的时候在使用, 否则反而会让调用者使用不方便, 比如name和age已经确定类型了, 如果将他们声明成泛型会增加调用者的负担

泛型的命名规则:只要符合合法的标识符就可以

泛型方法:

将泛型定义在方法上面的一种手段

格式:修饰符 <泛型> 返回值类型 方法名(参数列表){
    方法体;
    return 返回值;
}

 使用场景:1. 通过使用在静态方法中, 因为静态方法不能直接使用泛型类中的泛型!!!!!!!

确定泛型的时候 调用一次方法可以确定一次!!!!!!!

泛型接口:将泛型定义在接口上面

格式:public interface 接口名<E>{
    void method(E e);
}

使用场景 :接口中如果有不确定的类型的时候可以使用

确定泛型:

1.定义实现类的时候直接确定,一旦确定无法修改 ,这个实现类跟普通类没有任何区别!!!!!!

2.定义实现类的时候继续不确定, 需要将泛型在实现类上继续声明出去,这个实现类和泛型类又一样

概念: 本质就是一种不确定类型的表现形式, 在jdk1.5出现的,  通过<>描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值