一:包与权限
包:其实在JAVA当中就是一系列的文件夹而已
com.xxxx.xxx 规范:包名必须小写 且包名与包名之间用.来分隔
包最要的用法就是用于分类我们的代码,便于后期管理
Java类:主类/测试类 实体类 工具类...
service 存放业务代码
entity 存放实体类代码
util 存放工具类代码
业务逻辑代码
底层逻辑代码
权限:
公共 public
保护 protected
默认 啥也不写
私有 private
public protected 默认 private
本类中 √ √ √ √
本包中 √ √ √
其他包中继承 √ √
其他包中 √
- public 只要是在当前项目中 都可以访问
- private 只能在本类中访问
- 默认 只能在本包中访问(无论继承)
- protected 本包中可以访问(无论继承);其他包中只能继承访问
二:异常体系
1.异常:指的就是程序在编译或运行期间出现的一些错误
用面向对象的思想 我们可以把这些错误当成对象去看待
2.如何去描述错误?
1.错误的名称 类的名称
2.错误的原因
3.错误发生的位置(某个线程,某行代码)
所有的错误都会有一个最终的父类
Throwable:可抛出的 我们所有的异常对象都可以被抛出 throw new XxxxxException();
抛出分两种情况:
1.由JVM直接抛出
JVM会自动检测程序 如果出现异常 则自动创建该异常对象 然后去抛出
JVM自动执行 throw new XxxxxException();
2.我们手动抛出
在代码中我们手写 throw new XxxxxException();
Throwable分两大类:
1.Error:异常类比较少 但是一个个都比较狠
是直接由JVM抛出的一些严重性的错误-主要体现在内存上
OutofHeapError 堆内存溢出(堆没有空间再去创建对象)
StackOverFlowError 栈内存溢出(栈没有空间再去进栈函数)
我们一般不会去操心,这个异常不是我们应该尝试去处理解决的异常
2.Exception:异常类比较多 但是一个个都比较菜
- 运行时异常:RuntimeException
指的就是只有在程序运行java期间才能出现的错误,它是在编译期间javac检测不到的;
如果这个问题一旦发生,那么程序就直接中断,一般会捕获 至少保证程序继续运行。
ArrayIndexOutofBoundsException
NullPointerException
ClassCastException
......
System.out.println(10/0);
- 编译时异常:Exception及其其他的子类
就是在编译期间能够被检测出来的可能会发生的错误,问题可能会发生,也可能不会发生。
此时还是没有发生的,只有在运行时才可能发生;在此处可以预防它出错,写一些预备方案
一旦该异常发生 则可以选择一些预备方案来解决
对于编译时异常的预备解决方案:
声明 ---就是告诉调用者 我可能会有问题 如果真的发生了 调用者来决定怎么去处理
在当前异常发生的函数后面 throws 异常类名
void main() throws XxxException{
show();
}
void show() throws XxxException{
throw new XxxException(); //编译时异常
}
就是预先告诉调用者(就是准备调用show函数的"人"),我(show)可能会出错
对于调用者而言,就得小心谨慎的去使用
声明仅仅是告诉外界我自身可能会有问题,但是这个问题我自身没有去真正解决
所以对于调用者而言 它也有两种解决方案 声明/捕获
注意:对于运行时异常而言 声明是没有任何效果的!
捕获 ---就是当前自身去解决问题,并尝试阻止程序中断
在当前异常发生的地点 直接将异常处理调 内部消化了
void main(){
show();
}
void show(){
try{ //尝试着去执行某些代码
throw new XxxException(); // 编译时异常||运行时异常
} catch(XxxException e) { //一旦try中出现异常 则catch将其捕获
e = new XxxException(); //在catch里面可以做一些修正的工作
}
}