2022年04月03日讲到了 Collections工具类,同志们
1.泛型
List<Integer> pokers = new ArrayList<>(); // 这个 <> 里的就是泛型
// 这里的List<?> 指的是所有List<>的父类 // 也就是 这个方法里传什么类型的 List 都可以 // 但是这样的 List集合 不能添加值 public void test(List<?> list){ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i).getClass()); } }
小编定义了 一个形状体抽象类, 里面有个绘制的方法 draw(),
她有两个子类: 圆形类 圆角矩形类, 她们重载了绘画的方法
最后定义一个 画布类,里面有一个 全部绘制的方法 drawAll(),
可以传入 一个形状体集合, 把里面 所有元素全部 绘制出来
public class Canvas {
//画布类
//这个形参列表里要写成这样 才能传入 不同类型的形状体
public void drawAll(List<? extends Shape> list){
for (Shape shape : list) {
shape.draw();
}
}
}
2.异常处理
public class ExceptionDemo { // 以前我们每次用 Scanner都要抛一下异常 public static void main(String[] args) throws FileNotFoundException { Scanner scanner = new Scanner(new File("")); } }
public static void get(int[] array, int index) {
if (index < 0 || index > array.length - 1) {
// 写一个 throw 我们就可以自己打印异常了 :
throw new ArrayIndexOutOfBoundsException("正儿吧经的!");
}
int i = array[index];
System.out.println(i);
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
// 使用 try和 catch可以捕获异常
try {
// 这个 1 可以输出
System.out.println(1);
Scanner scanner = new Scanner(new File(""));
// 这个 2 输出不了
System.out.println(2);
} catch (FileNotFoundException fileNotFoundException) {
// 打印异常信息
fileNotFoundException.printStackTrace();
} // 这样还能捕获多个异常
catch (NullPointerException nullPointerException){
nullPointerException.printStackTrace();
}
// 它和throw的区别就是:
// try catch后面的语句 依旧会执行
System.out.println("try语句后的代码");
}
3. File类
就是一个用来操作文件的类
下面是 File类 里的一些方法
public class fileDemo {
public static void main(String[] args) {
File file = new File("file/e82.txt");
// 1. getAbsolutePath() 得到文件的绝对路径
String absolutePath = file.getAbsolutePath();
System.out.println(absolutePath);
// 2. getPath() 得到文件的路径
System.out.println(file.getPath());
// 3. getName() 得到文件的名称
System.out.println(file.getName());
// 4. length() 得到文件的大小
System.out.println(file.length());
// 5. getParent() 得到文件的上级目录
System.out.println(file.getParent());
// 6. renameTo() 将文件剪切然后改名
//file.renameTo(new File("D:\\demo.txt"));
// 7. exists() 判断文件是否存在
System.out.println(file.exists());
// 8. isFile() 判断是否为文件
System.out.println(file.isFile());
// 9. isDirectory() 判断是否为目录
System.out.println(file.isDirectory());
// 10. canWrite() 判断文件是否可写
System.out.println(file.canWrite());
// 11. canRead() 判断文件是否可读
System.out.println(file.canRead());
}
}
public class fileDemo2 {
public static void main(String[] args) throws IOException {
File file = new File("file");
// 1. createNewFile() 新建一个文件
file.createNewFile();
// 2. delete() 删除一个文件
// 只能删除空目录,有内容则无法删除
file.delete();
// 3. mkdir() 新建一个目录
// mkdirs() 可以连续创建好多层目录
file.mkdir();
// 4. 这样可以输出 文件创建的时间
long l = file.lastModified();
Date date=new Date(l);
System.out.println(date);
// 5. listFiles() 可以返回一个 File[]数组,得到全部子文件
// 只能拿到一层目录里面的内容
File[] files1 = file.listFiles();
for (int i = 0; i < files1.length; i++) {
System.out.println(files1[i].getName());
}
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// 写 false 为 不添加
// 写 true 为 添加
// 这样写就可以得到 文件夹里所有的 .txt文件了
return pathname.getName().endsWith(".txt");
}
});
for (File file1 : files) {
System.out.println(file1.getName());
}
}
}
THE END (^_^)/(T_T)