一,package
1,定义包
在代码的第一行使用package关键字定义包名,包名全部小写,用”.”隔开;
2,编译运行
编译:javac -d目录源文件名
运行:java包名.类名
3,访问不同包中的类
一个类如果想被其他包中的类使用,需要在class前面加上public
类一旦加上public,文件名必须和类名一致;
在源代码中直接使用类名形式访问一个类,默认是先找相同包中的类,如果没有再找import设置的类;
如果类中有2个以上的对象且想访问不同包中的类,需要在对象前加包名.类名.对象;
4,导入包
每次使用其他包中的类都加包名很麻烦,我们可以使用import关键字导入包,这样每次使用的时候直接用类名即可.
导入类名: 无论当前包中是否有要找的类, 都去导入的包中找
导入*: 如果当前包中有同名的类, 就在当前包中找,当前包中没有同名类, 才去导入包中找
5,有包类和无包类的访问
无包的类能不能访问有包的类:能
有包的类能不能访问无包的类:不能,因为不写导入是找同包的类,并且无包的类无法导入;
6,总结:
包也是一种封装形式;
以后写类都加上包,并且要写在程序文件的第一行,;
类前用public修饰,类名必须和文件名一致,类公有后,被访问的成员也要声明公有才可以被访问,否则编译会报错;
导入包用类名方式;
编译时加上-d,运行时加上包名;
二.jar
1.打jar包
jar cvf jar文件名文件夹名文件夹名
2.运行jar包
修改jar文件中的META-INF文件夹中的MANIFEST.MF文件,添加Main-Class配置,指定一个类作为jar文件运行时要找的类
格式:Main-Class: cn.itcast.PerdonDemo
3.使用jar包中的类
将jar包的绝对路径配置到classpath中,即可使用其中的类
三.异常
1.什么是异常
异常是程序运行过程中抛出的一些错误, 一旦出现异常,下面的代码将不再执行.
*2.异常的分类
Exception和Error有一个共同的父类Throwable,代表在程序中可以被抛出的对象.
Error:由虚拟机抛出的一些严重的错误, 程序中无法处理.
Exception除了RuntimeException:编译时异常, 编译时必须捕捉或声明.
RuntimeException及其子类:运行时异常, 编译时可以不处理.
3.抛出异常
使用throw关键字可以抛出一个异常对象
抛出一个异常可以通知当前方法的调用者
Throws和throw的区别:
Throws使用在函数上;后面跟异常类,可以跟多个,用逗号隔开;
Throw使用在函数内;后面跟的是异常对象;
一般情况下,函数内出现异常,函数上需要声明;
*4.处理异常
在运行一段有可能出现异常的代码时, 我们可以对其进行处理,处理方式有两种
声明: 在当前方法签名最后使用throws关键字声明有可能出现的异常,方法中调用其他方法如果出现异常, 当前方法中断,将异常抛出
捕捉: 将有可能出现异常的代码放在try代码块中,后面跟上catch代码块,捕捉有可能出现的异常, 如果try中代码出现异常,就会执行catch代码;
Catch是用于处理异常,如果没有catch就代表异常没有被处理过,如果该异常是检查时异常,那么必须声明。
*5.finally
finally用来和try配合使用,只要执行了try中的代码,就一定会执行finally, 除非使用System.exit(0)退出Java虚拟机
finally中也可以再使用try {} finally{}代码块和循环嵌套模式, 用来执行多条必须执行的语句
try {
需要被检测的代码;
}
catch(异常类变量) {
处理异常的代码:(处理方式)
}
finally {
一定会执行的语句;
}
例:
class ExceptionDemo {
public static voidmain(String[] args) {
Demo d = new Demo();
try {
int x = d.div(4,0);
System.out.println("x="+x);
}catch(Exception e) {
System.out.println("除零了");
//异常名称,异常信息;
System.out.println(e);
//异常名称,异常信息,异常出现的位置
//Jvm默认的异常处理机制,就是在调用printStackTrace方法;
e.printStackTrace();
}
System.out.println("over");
}
}
class Demo {
int div(int a, int b) {
return a/b;
}
}
输出结果:
除零了
java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero
atDemo.div(ErrorDemo.java:19)
atErrorDemo.main(ErrorDemo.java:6)
over
*6.重写方法时抛出异常问题
子类重写父类方法时, 不能抛出父类没有声明的异常
7.处理多个异常
可以使用throws关键字声明抛出多个异常,多个异常之间用","分隔
可以将有可能出现异常的代码放在try中,后面跟上多个与之相对应的catch, 捕捉不同的异常.注意: 如果多个catch中异常出现继承关系,捕捉时父类异常不能写在子类异常的上面
8.自定义异常
如果希望抛出一个自己定义的异常对象, 那么可以声明一个类继承Exception或者RuntimeException
因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象,所以对于这些特有的问题可以按照java对问题封装的思想,将特有的问题,进行自定义的异常封装;
继承Exception的原因:
异常体系有一个特点:因为异常类和异常对戏那个都被抛出;
它们都具备可抛性,这个可抛性是Throwable这个体系中独有特点;
只有这个体系中的类和对象才可以被throws和throw操作;