----自己总结写的,写的不好,请多指点
知识点:
一般会把字符串放在equals前面,防止空指针异常
异常:
分类:
throwable:
Error :服务器宕机,数据库崩溃
Exception: //常说的异常
编译期异常: 非RuntimeException及其子类
运行期异常: RuntimeException及其子类
Throwable成员方法:
public
String
getMessage(); //获取异常信息
public
String
toString(); //获取异常类型,异常信息
public
void
printStackTrace(); //获取异常类型,异常信息,以及异常出现的位置.
处理异常的两种方式:
1:try…catch…finally//解决完程序会继续执行
try:用来检测异常的
catch:用来捕获异常
finally:释放异常
格式1:处理一个异常
try{
//可能出问题的代码;
}catch(异常类型 变量名) {
//出问题后的解决方案
}finally{
//释放资源
}
格式2:处理多个异常
try{
//可能出问题的代码;
}catch(异常类型1 变量名) {
//出问题后的解决方案
}catch(异常类型2 变量名) {
//出问题后的解决方案
}catch(异常类型3 变量名) {
//出问题后的解决方案
}finally{
//释放资源
}
注意:try跟多个catch,小的放前面,大的必须放后面.
原因:根据多态的原理,大的放前面,就会将所有的子类对象接收,后面的就没意义
格式3: 实际开发的写法
try {
//可能出问题的代码
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源的
}
finally 关键字:
作用: 一般是用来释放资源的.
特点: 正常情况: 里边的代码一定会执行.
特殊情况: 还没有执行到finally里边的代码时,JVM已经退出了.
B:throws
如果抛出的是
编译期异常
,
调用者必须处理.
如果抛出的是
运行时异常
,
调用者可以不用显示处理
.
自定义异常:
其实就是我们自定义一个类去继承Exception或者RuntimeException.
然后自动生成下 构造方法即可.
注意事项:
1: 子类不能出现父类没有的异常.
2: 父类如果没有异常,子类有异常只能try,不能抛.
3: 关于异常的处理,能try就try,try不了就抛.
File类:
概述: 用来操作文件(夹), 其实严格来讲, 它是用来操作 路径的.
路径的分类:
绝对路径: 以盘符开头的路径,是一个固定的,写"死"的路径.
相对路径: 相对于某个路径而言. 一般是相对于当前项目来讲的.
构造方法:
public File(String name);//根据一个路径得到File对象
public File(String parent,String child);//:根据一个目录和一个子文件/目录得到File对象
public File(File parent,String child);//根据一个父File对象和一个子文件/目录得到File对象
File类成员方法:
* A:创建功能
* public boolean
createNewFile():创建文件 如果存在这样的文件,就不创建了
//返回值是boolean值,如果没有就创建,返回true
* public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了返回值是boolean值,如果没有就创建,返回true
*
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
返回值是boolean值,如果没有就创建,返回true
* 注意事项:
* 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
B:重命名和删除功能
* public boolean renameTo(File dest):把文件重命名为指定的文件路径
* public boolean delete():删除文件或者文件夹
* B
:重命名注意事项:
* 如果路径名相同,就是改名。
* 如果路径名不同,就是改名并剪切。
*
C:删除注意事项:
* Java中的删除不走回收站。
* 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
C:判断功能
* public boolean isDirectory():判断是否是目录
* public boolean isFile():判断是否是文件
* public boolean exists():判断是否存在
* public boolean canRead():判断是否可读
* public boolean canWrite():判断是否可写
* public boolean isHidden():判断是否隐藏
D:获取功能
* public String getAbsolutePath():获取绝对路径
* public String getPath():获取构造方法中的,一般获取相对路径路径
* public String getName():获取名称
* public
long
length():获取长度。字节数
* public long lastModified():获取最后一次的修改时间,毫秒值
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
File[] dirFiles = file.listFiles(
new FilenameFilter()
{//文件过滤器
@Override
public boolean accept(File dir, String name) {
File newFile =new File(dir,name);
return newFile.isFile()&&newFile.getName().endsWith(".jpg");
}
});
面试题:
记忆:
1.try跟多个catch,小的放前面,大的必须放后面.
2.jdk1.7新特性,多个catch语句里面的异常类型合并成一个
3.try 执行后,后面的程序会执行,throw抛出异常后面的语句不会执行
1.main是怎么处理异常的?
方式一:自己处理,程序继续运行
方式二:交给JVM处理,,JVM有一个默认的异常处理异常机制,会将异常信息,异常名称,一场出现的
2.编译期异常和运行期异常的区别?
编译时异常:
必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常:
无需显示处理
3.throws和throw的区别?
throws
* 用在方法声明后面,跟的是异常类名
* 可以跟多个异常类名,用逗号隔开
* 表示抛出异常,由该方法的调用者来处理
throw
* 用在方法体内,跟的是异常对象名
* 只能抛出一个异常对象名
* 表示抛出异常,由方法体内的语句处理
4.如果没有finally,后面的代码也会执行,那么finally有和没有的区别是什么?(假设finally一定会执行的正常情况下)?
如果catch中有return语句,finally里边的代码也会执行,如果不加finally,代码是执行不了的.
5: final,finally,finalize 三者的区别是什么?
final:
用来修饰类,成员方法,成员变量的.修饰的类不能被继承,但是可以继承别的类,
修饰的方法不能被子类重写,修饰的变量是一个常量.
finally:
是try-catch-finally语句体的一部分,一般是用来释放资源的,正常情况下,里边的代码肯定会执行.
finalize:
它是Object类中的一个方法,当对象变成垃圾的时候,由GC来调用该对象的finalize()方法回收对象.
6: 异常的处理方式有几种,他们的区别是什么?
try-catch-finally: 处理完后,程序会继续执行.
throws:处理完后,程序会终止运行.
一个关于"异常"的经典的题:
public static void main(String[] args) {
System.out.println(method()); //打印结果是多少?
}
public static int method() {
int num = 10;
try {
System.out.println(1/0);
} catch (Exception e) {
num = 20;
return num;
//return做了两件事情,第一:先创建一个返回路径,记录住要返回的值,
//这个时候,检测到还有finally,所以会去执行下finally里边的内容,
//执行完finally里边的内容后,会将之前返回路径记录住的值返回
}finally {
num = 30;
System.out.println("我执行了吗?");
}
return num;
}
结果:num=20