1.数组
变量:存储数据
数组:存储多个数据
数组:
- 一段连续的内存空间
- 多个相同数据类型的有序集合
特点:
- 引用数据类型
- 是定长的,长度一旦确定不可改变
- 存储的多个数据类型相同
- 有序的,有索引
索引:连续的内存空间每一个小空间的符号
- 从0开始,每次加一
- 每个数组的第一个空间索引:0
- 每个数组的最后一个空间索引:数组名.length-1
操作数组中的数据:
- 根据索引操作
- 数组名[索引]
数组的定义语法:
声明:
数据类型[] 数组名
数据类型:根据存储的数据的类型
初始化:第一次赋值
动态初始化:先创建数组,后附值
数据类型[] 数据名 = new 数据类型[长度]
数组只创建不赋值,只附默认值
静态初始化:创建数组同时赋值
数据类型[] 数据名 = new 数据类型[]{};
遍历:
普通for循环
增强for循环
二维数组:
数组中数组
动态初始化:
静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{},{}};
数据类型[][] 数组名 = {{},{}};
数据类型[] 数组名[] = new 数据类型[][]{{},{}};
2.异常
异常体系:
Throwable
/ \
Error Exception
/ \
RuntimeException CheckedException
Error: 错误,一般是由虚拟机生成脱出的,不由程序猿控制
Exception:异常
RuntimeException 运行时异常:发生在程序运行期间,一旦遇到下面代码无法执行,可以通过简单的增强程序的健壮性的代码处理 ->(if)
CheckedException 编译时异常|检查时异常,发生在程序编译时异常不处理,程序无法运行。
常见的运行时异常:NullPointerException 空指针异常
ClassCastException 类型转换异常
NegativeArraySizeException 数组长度负数异常
ArrayIndexOutOfBoundsException 数组索引越界
ArithmeticException 数字异常
运行时异常都会直接或简洁的继承自RuntimeException
编译时异常:
在编译时就出现的异常,就必须要解决
异常处理方案:
所有的异常都可以通过异常处理方案处理
编译时异常只能通过异常处理方案
运行时异常可以通过简单增强程序健壮性代码解决,也可以通过异常处理方案
异常抛出:throws
抛出到方法上:谁调用谁处理
异常的捕获: 捕获异常,提供异常的代码 alt + enter alt CTRL+ t
try{
有可能出现的异常的代码;
}catch(异常类型A e){
遇到当前类形的异常对应的异常处理代码
}finally{
一定会执行的代码
}
注意:
try中一旦遇到异常,try中的代码无法继续执行,直接判断能被哪一个catch捕获,
从上到下判断,如果所有的catch都不能捕获,程序直接结束,这个异常没有处理。
try中如果执行没有遇到异常,就不会判断catch的捕获
一个try后面可以跟1-n个catch
大范围类型的catch捕获放在后面,小返回的放前面
finally的代码无论try中是否出现异常 一定会执行会finally(做资源的关闭)
自定义异常:
自定义异常必须直接或者简洁的继承自Exception
运行时异常必须直接或间接的继承RuntimeException
throw制造异常
对于编译型异常和运行时异常:关系编译型是异常是在编译时就会报错的,我们需要认为的处理或是抛给上一层处理(谁调用谁处理),但运行时异常,只有在运行时才又可能会出错,我们可以捕获异常或者是增强程序健壮性(让代码运行时不会出错或是给出解决方案)。
3.判断是否为三角形
public class ExceptionText {
public static void main(String[] args) {
triangle(-1,3,5);
}
static void triangle(int a,int b,int c){
int[] arr = {a, b, c};
for (int num:arr){
if (num<=0){
throw new IllegalArgumentException("老哥咱就不能输入大一点的数");
}
}
Arrays.sort(arr);
if (arr[0]+arr[1]<=arr[2]){
throw new IllegalArgumentException("a,b,c不能构成三角形");
}
System.out.println("a,b,c能构成三角形");
}
}
class NumberException extends RuntimeException{
public NumberException(String message) {
super(message);
}
public NumberException() {
}
}
4.可变参数
可变参数:就是参数的个数可以变化
注意:
变量接收是数组
如果参数是多个,可变参数在最后面且只能存在一个可变参数