Day19练习

A:简答题

1、请把我们讲解过的所有类中的方法在API中找到,并使用自己的话进行描述

Throwable
public String getMessage()
返回该错误的详细信息
public String toString() 
返回这个异常的简短信息
public void printStackTrace()
获取异常类名和异常信息 以及异常出现在程序中的位置
printStackTrace(PrintStream s) 
打印该时间和指定的打印流的回溯

File
public boolean createNewFile()
创建新文件 若文件存在就不再创建
public boolean mkdir()
创建目录(单层目录)
public boolean mkdirs()
创建目录(多层目录/单层目录)
public boolean delete()
删除文件或目录(只能删除空目录)
public boolean renameTo(File dest) 
把文件重命名为指定文件路径
	如果路径名相同,就是改名
	如果路径名不同,就是改名并剪切
public boolean isDirectory()
判断是否为目录
public boolean isFile() 
判断是否为文件
public boolean exists() 
判断是否存在
public boolean canRead() 
判断是否可读
public boolean canWrite() 
判断是否可写
public boolean isHidden()
判断是否隐藏
public String getAbsolutePath()
获取绝对路径
public String getPath()
获取相对路径
public String getName() 
获取名称
public long length() 
获取长度(字节数)
public long lastModified() 
获取最后一次修改时间
public String[] list() 
获取指定目录下的文件或文件夹的名称数组
public File[] listFiles() 
获取指定目录下的文件或者文件夹的file数组

2、请说说什么是异常?异常的分类?

概述
	异常就是Java程序在运行过程中出现的错误
分类
    Error
        Java虚拟机无法解决的问题
    Exception
        编译时异常 非RuntimeException
        运行时异常 RuntimeException

3、请写出异常处理的两种方式?

a. try...catch...finally
b. throws

4、请说说编译期异常和运行期异常的区别?

编译期异常
	java程序必须进行处理 否则程序发生错误 无法通过编译
运行期异常
	无需显示处理 可以和编译期异常一样处理

5、请说说throws与throw的区别?

throws
	用在方法声明后 后面写异常类名
	可以跟多个异常类名 逗号隔开即可
	表示抛出异常 让方法调用者处理
	throws表示出现异常的一种可能性 不一定会发生这些异常
throw
	用在方法体内 后面写异常类名
	只能抛出一个异常对象名 (编译期异常 运行期异常)
	使用throw则一定会抛出某种异常

6、请说说final、finally与finalize的区别?

final
	final是一个状态修饰符 可以用来修饰类 变量 成员方法
	被修饰的类不能被子类继承
	被修饰的变量不能再次赋值(常量)
	被修饰的方法不能被子类重写
finally
	在try...catch...finally使用
	始终会被执行(JVM不能退出)
finallize
	Object类中的一个方法 用来回收垃圾

7、请说说异常的注意事项及如何使用异常处理?

注意事项
a:子类重写父类方法时 子类的方法必须抛出相同的异常 或父类异常的子类 或者子类不抛出异常 
b:如果父类抛出了多个异常 子类重写父类时 只能抛出相同的异常 或者是他的子集 子类不能抛出父类没有的异常 或者子类不抛出异常 
c:如果被重写的方法没有异常抛出 那么子类的方法绝对不可以抛出异常 如果子类方法内有异常发生 那么子类只能try 不能throws

使用异常处理
后续程序需要继续运行就try
后续程序不需要继续运行就throws

8、请说说文件名称过滤器FilenameFilter的作用?

用来过滤文件名
需要重写accept方法
    boolean accept(File dir, String name) 
    测试如果一个指定的文件应包含在文件列表中。  

9、请写出最常见到的5个RuntimeException异常。

java.lang.IndexOutOfBoundsException 数组角标越界异常
java.lang.NullPointerException 空指针异常
java.lang.ClassNotFoundException 指定的类找不到
java.lang.ClassCastException 数据类型转换异常
java.lang.InstantiationException 实例化异常

B:看程序写结果(写出自己的分析理由),程序填空,改错,看程序写结果。

1、给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因

public class Test {
    public static void main(String[] args) {
        try {
            String s = "12345";
            Integer in = s;
            System.out.println(in);
        } catch (ClassCastException e) {
            System.out.println("ClassCastException ");
        }
        System.out.println("over");
    }
}
//将Integer in = s;改为
//Integer in = Integer.parseInt(s);
//String类型不能直接转换为Integer类型

C:编程题

1、编写程序,完成下面的需求,并测试

需求:从银行取钱,发现钱不够,通过自定义异常给出提示。

public class Homework01 {
    public static void main(String[] args) {
        //需求:从银行取钱,发现钱不够,通过自定义异常给出提示。
        //总金额
        int money = 100;
        //需要取出的金额
        int getMoney = 101;


        if ((money -= getMoney) >= 0) {
            System.out.println("余额=" + money + "元");
        } else {
            throw new MoneyException("余额不足");
        }

    }
}
//自定义了金额异常
class MoneyException extends RuntimeException {
    public MoneyException(String message) {
        super(message);
    }
}

2、编写程序,完成下面的需求,并测试

需求:判断D盘指定目录下是否有后缀名.jpg的文件,如果有,就输出该文件名称

public class Homework02 {
    public static void main(String[] args) {
        File file = new File("E:\\Test");
        //获取指定目录下的文件
        File[] files = file.listFiles();
        for (File file1 : files) {
            //判断名字结尾为.jpg的文件
            if (file1.getName().endsWith(".jpg")){
                System.out.println(file1);
            }
        }
    }
}

3、编写程序,完成下面的需求,并测试

需求:采用文件名称过滤器方式,判断D盘指定目录下是否有后缀名.jpg的文件,如果有,就输出该文件绝对路径。

public class Homework03 {
    public static void main(String[] args) {
        File file = new File("E:\\Test");
        //通过过滤器 过滤后缀名.jpg的文件
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".jpg");
            }
        });
        //遍历文件名
        for (File file1 : files) {
            System.out.println(file1.getAbsolutePath());
        }

    }
}

4、编写程序,完成下面的需求,并测试

需求: 修改指定目录下 所有文件的名称

如: 
E:\resource\各种专治\[www-itcast-cn]专治各种疼痛01.mp4
E:\resource\各种专治\[www-itcast-cn]专治各种疼痛02.mp4
E:\resource\各种专治\[www-itcast-cn]专治各种疼痛03.mp4
修改成
E:\resource\各种专治\专治各种疼痛01.mp4
E:\resource\各种专治\专治各种疼痛02.mp4
E:\resource\各种专治\专治各种疼痛03.mp4
public class Homework04 {
   public static void main(String[] args) {
       File file = new File("E:\\Test");
       //通过过滤器 过滤后缀名.jpg的文件
       File[] files = file.listFiles(new FileFilter() {
           @Override
           public boolean accept(File pathname) {
               return pathname.getName().endsWith(".jpg");
           }
       });
       //遍历
       for (File f : files) {
           //修改名字内容
           String replace = f.getName().replace(".jpg", ".png");
           //通过renameTo方法 路径相同则为更改名字
           f.renameTo(new File("E:\\Test\\" + replace));
       }
       System.out.println("改名完成");
   }
}

5 、删单级非空目录

public class Homework05 {
    public static void main(String[] args) {
        //删单级非空目录

        File file = new File("E:\\Test");
        File[] files = file.listFiles();
        for (File f : files) {
            f.delete();
        }
        file.delete();
        System.out.println("删除成功");

    }
}

6 、递归删除多级文件夹

public class Homework05 {
    public static void main(String[] args) {
        //递归删除多级文件夹
        
        //判断要删除的文件夹
        String directory = "E:\\Test";
        File file = new File(directory);
        //使用递归 一直判断该文件夹是否为空然后删除
        deleteFile(file);
        System.out.println("删除完成");
    }

    private static void deleteFile(File file) {
        //文件数组
        File[] files = file.listFiles();
        //遍历文件
        for (File f : files) {
            //如果是文件 就直接删除
            if (f.isFile()) {
                f.delete();
            } else {
            //如果是文件夹 先判断是否为空
            //若为空则删除 否则递归
            //直到找到空文件夹 或者 文件夹中只有文件才停止    
                deleteFile(f);
                f.delete();
            }
        }
        //删除最外层的文件夹
        file.delete();
    }
}

7 、判断多级文件夹下有没有.jpg结尾的文件,如果有把后缀名 .jpg 文件改为.png

//可比较编程题4
public class Homework07 {
    public static void main(String[] args) {
        //判断多级文件夹下有没有.jpg结尾的文件,如果有把后缀名 .jpg 文件改为.png

        File file = new File("E:\\Test");
        setFile(file);
        System.out.println("修改完成");
    }

    private static void setFile(File file) {
        //文件数组
        File[] files = file.listFiles();
        //遍历文件数组
        for (File f : files) {
            //判断 将.jpg结尾的文件修改为.png结尾
            if (f.isFile() && f.getName().endsWith(".jpg")) {
                String replace = f.getName().replace(".jpg", ".png");
                //通过renameTo来修改文件名字
                f.renameTo(new File(file.getAbsolutePath() + "\\" + replace));
            } else if (f.isDirectory()) {
                //若是目录 就继续往里面找 直到找到最后一个目录为止
                setFile(f);
            }

        }
    }
}

8、复制单级文件夹

public class Homework08 {
    public static void main(String[] args) {
        //数据源 从哪里来的文件夹
        File source = new File("E:\\Test");
        //数据目的 到哪里去的文件夹
        File target = new File("E:\\Demo", source.getName());
        //创建一个与数据源目录名字相同的目录
        //如果存在该目录就不在创建
        if (!target.exists()) {
            target.mkdirs();
        }

        //遍历数据源的文件
        File[] sourceFiles = source.listFiles();
        for (File sourceFile : sourceFiles) {
            //获取数据源文件夹中的所有文件名字
            String sourceFileName = sourceFile.getName();
            //创建一个新的目的文件 文件名与数据源文件名相同 路径与数据目的一致
            File targetFile = new File(target.getAbsolutePath(), sourceFileName);
            //通过IO流复制文件
            copyFile(sourceFile, targetFile);
        }

    }

    private static void copyFile(File sourceFile, File targetFile) {
        //字节流的文件拷贝
        FileInputStream in = null;
        FileOutputStream out = null;

        try {
            in = new FileInputStream(sourceFile);
            out = new FileOutputStream(targetFile);
            byte[] bytes = new byte[1024];
            int lengthBytes = 0;
            while ((lengthBytes = in.read(bytes)) != -1) {
                out.write(bytes, 0, lengthBytes);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

9、复制多级文件夹

public class Homework09 {
    public static void main(String[] args) {
        //复制多级文件夹
        File source = new File("E:\\Test");
        File target = new File("E:\\Demo");
        copyDir(source,target);

    }

    private static void copyDir(File source, File target) {
        target = new File(target,source.getName());
        target.mkdirs();
        File[] sourceFiles = source.listFiles();
        for (File sourceFile : sourceFiles) {
            if (sourceFile.isFile()){
                File targetFile = new File(target, sourceFile.getName());
                copyFile(sourceFile,targetFile);
            }
            if (sourceFile.isDirectory()){
                copyDir(sourceFile,target);
            }
        }

    }
    private static void copyFile(File sourceFile, File targetFile) {
        //字节流的文件拷贝
        FileInputStream in = null;
        FileOutputStream out = null;

        try {
            in = new FileInputStream(sourceFile);
            out = new FileOutputStream(targetFile);
            byte[] bytes = new byte[1024];
            int lengthBytes = 0;
            while ((lengthBytes = in.read(bytes)) != -1) {
                out.write(bytes, 0, lengthBytes);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是经典的51道SQL查询练习题: 1. 查询表中所有记录 ``` SELECT * FROM table_name; ``` 2. 查询表中的某些列 ``` SELECT column_name1, column_name2 FROM table_name; ``` 3. 查询表中不重复的某些列 ``` SELECT DISTINCT column_name1, column_name2 FROM table_name; ``` 4. 按条件查询表中的记录 ``` SELECT * FROM table_name WHERE condition; ``` 5. 对查询结果进行排序 ``` SELECT * FROM table_name ORDER BY column_name; ``` 6. 对查询结果进行倒序排序 ``` SELECT * FROM table_name ORDER BY column_name DESC; ``` 7. 查询表中前 n 条记录 ``` SELECT * FROM table_name LIMIT n; ``` 8. 查询表中第 m 条到第 n 条记录 ``` SELECT * FROM table_name LIMIT m, n-m+1; ``` 9. 对查询结果进行计数 ``` SELECT COUNT(*) FROM table_name; ``` 10. 对查询结果进行求和 ``` SELECT SUM(column_name) FROM table_name; ``` 11. 对查询结果进行平均值计算 ``` SELECT AVG(column_name) FROM table_name; ``` 12. 对查询结果进行最大值计算 ``` SELECT MAX(column_name) FROM table_name; ``` 13. 对查询结果进行最小值计算 ``` SELECT MIN(column_name) FROM table_name; ``` 14. 对查询结果进行分组计算 ``` SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 15. 对查询结果进行分组计算并进行排序 ``` SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY COUNT(*) DESC; ``` 16. 对查询结果进行多条件查询 ``` SELECT * FROM table_name WHERE condition1 AND condition2; ``` 17. 对查询结果进行模糊查询 ``` SELECT * FROM table_name WHERE column_name LIKE '%keyword%'; ``` 18. 对查询结果进行通配符查询 ``` SELECT * FROM table_name WHERE column_name LIKE '_keyword'; ``` 19. 对查询结果进行多表查询 ``` SELECT * FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 20. 对查询结果进行多表联合查询 ``` SELECT * FROM table_name1 UNION SELECT * FROM table_name2; ``` 21. 对查询结果进行多表交集查询 ``` SELECT * FROM table_name1 INTERSECT SELECT * FROM table_name2; ``` 22. 对查询结果进行多表差集查询 ``` SELECT * FROM table_name1 EXCEPT SELECT * FROM table_name2; ``` 23. 对查询结果进行子查询 ``` SELECT * FROM table_name WHERE column_name IN (SELECT column_name FROM another_table WHERE condition); ``` 24. 对查询结果进行连接查询 ``` SELECT * FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 25. 对查询结果进行左连接查询 ``` SELECT * FROM table_name1 LEFT OUTER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 26. 对查询结果进行右连接查询 ``` SELECT * FROM table_name1 RIGHT OUTER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 27. 对查询结果进行全连接查询 ``` SELECT * FROM table_name1 FULL OUTER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 28. 对查询结果进行自连接查询 ``` SELECT * FROM table_name t1, table_name t2 WHERE t1.column_name=t2.column_name; ``` 29. 对查询结果进行临时表查询 ``` CREATE TEMPORARY TABLE temp_table_name AS SELECT * FROM table_name WHERE condition; SELECT * FROM temp_table_name; ``` 30. 对查询结果进行自定义列名 ``` SELECT column_name1 AS name1, column_name2 AS name2 FROM table_name; ``` 31. 对查询结果进行多条件排序 ``` SELECT * FROM table_name ORDER BY column_name1 ASC, column_name2 DESC; ``` 32. 对查询结果进行多表连接查询并进行分组计算 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name GROUP BY table_name1.column_name1; ``` 33. 对查询结果进行多表连接查询并进行聚合计算 ``` SELECT table_name1.column_name1, SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name GROUP BY table_name1.column_name1; ``` 34. 对查询结果进行多表连接查询并进行统计计算 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1; ``` 35. 对查询结果进行分页查询 ``` SELECT * FROM table_name LIMIT m, n-m+1; ``` 36. 对查询结果进行日期计算 ``` SELECT DATE_ADD(date_column, INTERVAL 1 MONTH) FROM table_name; ``` 37. 对查询结果进行日期格式化 ``` SELECT DATE_FORMAT(date_column, '%Y-%m-%d') FROM table_name; ``` 38. 对查询结果进行日期比较 ``` SELECT * FROM table_name WHERE DATEDIFF(date_column1, date_column2) > 30; ``` 39. 对查询结果进行日期范围查询 ``` SELECT * FROM table_name WHERE date_column BETWEEN 'start_date' AND 'end_date'; ``` 40. 对查询结果进行日期部分提取 ``` SELECT YEAR(date_column), MONTH(date_column), DAY(date_column) FROM table_name; ``` 41. 对查询结果进行多表连接查询并进行分组计算和排序 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC; ``` 42. 对查询结果进行多表连接查询并进行多条件排序 ``` SELECT * FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name ORDER BY table_name1.column_name1 ASC, table_name2.column_name2 DESC; ``` 43. 对查询结果进行多表连接查询并进行多条件分组计算和排序 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC; ``` 44. 对查询结果进行多表连接查询并进行多条件聚合计算和排序 ``` SELECT table_name1.column_name1, SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY SUM(table_name2.column_name2) DESC; ``` 45. 对查询结果进行多表连接查询并进行多条件统计计算和排序 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) ASC; ``` 46. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算和排序 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC; ``` 47. 对查询结果进行多表连接查询并进行多条件统计计算、聚合计算和排序 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) ASC, SUM(table_name2.column_name2) DESC; ``` 48. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算和排序 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC; ``` 49. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算、排序和分页查询 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC LIMIT m, n-m+1; ``` 50. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算、排序、分页查询和列过滤 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC LIMIT m, n-m+1 OFFSET k ROWS FETCH NEXT l ROWS ONLY; ``` 51. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算、排序、分页查询、列过滤和条件过滤 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 HAVING COUNT(*) > 10 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC LIMIT m, n-m+1 OFFSET k ROWS FETCH NEXT l ROWS ONLY; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值