一、 Math
1.1 简介
A.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数 数学工具类
1.2 常量
常量名称 |
常量说明 |
public static final double E |
e 即自然对数的底数 |
public static final double PI |
π |
代码
package com.qf.test02;
public class Test01 {
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.E);
}
}
1.3 常用的方法
方法名称 |
方法描述 |
public static double abs(double a) |
绝对值 |
public static double cbrt(double a) |
返回 double 值的立方根 |
public static double sqrt(double a) |
返回正确舍入的 double 值的正平方根 |
public static double floor(double a) |
|
public static double ceil(double a) |
向上取整 |
public static long round(double a) |
将舍入为整数 |
public static int max(int a, int b) |
返回两个 int 值中较大的一个 |
public static int min(int a, int b) |
返回两个 int 值中较小的一个 |
public static double random() |
该值大于等于 0.0 且小于 1.0 |
public static double pow(double a, double b) |
返回第一个参数的第二个参数次幂的值 |
二、Scanner
2.1 简介
A.一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器==> 扫描器
B.Scanner 的多线程使用是不安全的
2.2 构造方法
构造方法名称 |
构造方法描述 |
public Scanner(File source) |
构造一个新的 Scanner,它生成的值是从指定文件扫描的 |
public Scanner(InputStream source) |
构造一个新的 Scanner,它生成的值是从指定的输入流扫描的 |
public Scanner(String source) |
造一个新的 Scanner,它生成的值是从指定字符串扫描的 |
2.3 常用的方法
方法名称 |
方法描述 |
public xxxhasNextxxx() |
xxx==>表示的是基本数据类型(用于判断键盘录入与接收数据类型是否一致) |
public String next() |
用于获取字符串 |
public String nextLine() |
获取一行内容(空格) |
public xxx nextxxx() |
用于接收各种基本数据类型的数据(没有 nextChar方法) |
2.4 问题
a. 如果先打印nextInt,再打印nextLine()
b. 因为nextLine会读取回车,当使用键盘输入整数之后,按回车键会错误
public static void main(String[] args) {
/*
避免nextLine读取回车的问题
方法一:
*/
Scanner scanner = new Scanner(System.in);
System.out.println("输入一个整数:");
String nextLine = scanner.nextLine();
System.out.println(Integer.parseInt(nextLine));
System.out.println("输入一行:");
String nextLine1 = scanner.nextLine();
System.out.println(nextLine1);
}
三、Arrays
3.1 简介
A.此类包含用来操作数组(比如排序和搜索)的各种方法 数组操作类
3.2 常用方法
方法名称 |
方法描述 |
public static String toString(int[] a) |
返回指定数组内容的字符串表示形式 |
public static int binarySearch(int[] a, int key) |
用于查找指定元素在数组的位置 |
public static int[] copyOf(int[] original,int newLength) |
复制指定的数组 |
public static void fill(int[] a, int val) |
填充指定的值到数组中 |
public static void sort(int[] a) |
按照升序进行排列 |
四、大数据类型-BigDecimal
4.1 简介
A.不可变的、任意精度的有符号十进制数 ==>大的数据类型
4.2 常用构造方法
构造方法名称 |
构造方法描述 |
public BigDecimal(BigInteger val) |
将 BigInteger 转换为 BigDecimal |
public BigDecimal(String val) |
将 BigDecimal 的字符串表示形式转换为 BigDecimal |
4.3 常用方法
方法名称 |
方法描述 |
public BigInteger abs() |
绝对值 |
public BigDecimal add(BigDecimal augend) |
加法 |
public BigDecimal subtract(BigDecimal subtrahend) |
减法 |
public BigDecimal multiply(BigDecimal multiplicand) |
乘法 |
public BigDecimal remainder(BigDecimal divisor) |
取余数 |
public BigDecimal divide(BigDecimal divisor) |
除法 |
五、异常
5.1 简介
1.生活中: 上班堵车..... 上课迟到 ..... 突然下暴雨...
2.开发中异常:程序在编译期间或者运行期间发生错误
A.程序在编译期间发生错误
B.程序在运行期间发生错误
C.项目中实际的需求与代码执行的顺序不匹配的时候
5.2 异常体系
异常类 |
异常类说明 |
Throwable |
所有异常的类直接父类或者间接的父类,只有发生的异常是Throwable或者是其子类的时候才需要进行处理 |
Error |
表示非常严重的异常,这种异常不需要进行处理(要避免这种异常产生StackOverflowError),一般都是jvm内部的异常 |
Exception |
表示不是非常严重的异常,需要自身来进行处理 |
RuntimeException |
运行时异常(大部分产生的异常都是RuntimeException的子类) |
5.3 异常分类
1.分类:
A.编译时异常:在编译期间发生的错误
B.运行时异常:在运行期间发生的错误
5.4 jvm处理异常的方式
A.某段代码发生了异常
B.将异常的信息封装到 Throwable中
C.将异常抛给调用
D.一层一层往上抛
E.如果调用者都不处理异常 就由jvm来处理异常
F.jvm处理异常
a.在控制台打印异常信息(堆栈信息) b.终止程序的运行
六、异常处理
6.1 捕获-try-catch
1.语法:
try{
可能发生异常的代码
}catch(异常类型声明) {
发生异常处理方式
}
2.单词翻译: try ==>尝试 catch 抓取 捕捉
3.解释:
A.try中的代码 ==>try中是可能产生异常的代码
B.catch小括号后是异常类型的声明 异常类型必须是 Throwable的子类
C.catch大括号中 发生异常的处理方式 a.收集异常的信息(日志信息) b.编写代码 处理异常
4.执行流程
A.执行try中的代码
B.如果不发生异常 不会执行catch中代码 正常执行下面的代码
C.如果发生异常
a.如果发生的异常与声明的异常可以匹配 则执行catch中代码 再正常执行下面代码
b.如果发生的异常与声明的异常不可以匹配 则由jvm来处理异常: a.打印堆栈信息 b.终止程序
注意点
a.匹配:发生的异常是声明异常的本身或者是其子类
6.2 捕获-try-catch-catch
1.语法:
try{
可能发生异常代码
}catch(异常类型声明) {
发生异常处理方式
}catch(异常类型声明){
发生异常处理方式
}
2.执行流程
A.执行try中代码
B.如果不发生异常 则执行后面的代码
C.如果发生异常
a.发生的异常 依次与catch中异常类型进行匹配 如果可以匹配 则执行对应catch中代码
b.发生的异常与catch异常类型不匹配 则由 jvm来处理异常
1)打印堆栈信息 2)终止程序
3.说明:
A.多个异常类型声明的时候 是由小的范围到大的范围
B.声明异常类型的范围越小越好 容易帮助解决问题
C.在jdk1.7之后 声明多个异常 可以使用|来连接多个异常
6.3 捕获-try-catch-finally
1.语法:
try{
可能发生异常代码
}catch(异常类型的声明){
异常处理方式
} finally{
最后执行的代码
}
2.单词翻译:finally 最终 最后
3.执行流程
A.执行try中代码 如果没有发生异常 执行finally中代码 再执行下面代码
B.如果发生了异常
a.如果发生的异常与声明的异常可以匹配 执行 catch中代码 再执行finally中代码
b.如果发生的异常与声明的异常不可以匹配 执行finally中代码
异常由jvm来处理 1)打印堆栈信息 2)终止程序
4.说明
A.不管是否发生异常都是执行finally中代码
B.遇到return 关键字 会先执行finally中代码 再执行return
C.杀死jvmjava虚拟机 才不执行finally中代码
D.释放资源
6.4 捕获- try- finally
1.语法:
try{
可能发生异常代码
}finally{
最终执行代码
}
2.执行流程
A.执行try中的代码
B.执行finally代码
3.说明
A.主要是将try与finally中的代码进行分离 代码清晰结构度高
B. 发生异常 还是由jvm来进行处理
6.5 Throws
1.Throws 声明异常
2.使用场景:在方法中 方法中的代码可能发生异常 但是不想自身来进行处理 就可以声明异常 抛出 由调用者处理
3.语法:
访问修饰符 返回值类型 方法名称(参数列表) throws 异常类型{
方法体
return 返回值
}
4.说明
A.声明异常的范围越小越好
B.如果声明的异常是运行时异常本身或者是其子类的时候 调用者可能不进行处理
C.如果声明的异常不是运行时异常本身或者是其子类的时候 调用必修处理
6.6 Throw
1.Throw 抛出异常
2.语法:
访问修饰符 返回值类型 方法名称(参数列表){
throw new 异常类型()
}
3.说明
A.抛出的异常是运行时异常以及其子类的时候 调用者不需要进行处理
B.抛出的异常不是运行时异常以及其子类的时候 调用者必须进行处理
C.在一个作用域中只能抛出一个异常
D.Throw 一般与Throws搭配使用
6.7 Throw与 Throws 比较
Throw |
Throws |
抛出异常 |
声明异常 |
在方法体中 |
在方法参数列表后 |
作用域下只能抛出一个异常 |
声明多个异常 |
异常确实存在,确实可能发生这个异常 |
异常不一定存在 ,异常并不一定会发生 |
6.8 Throwbale
6.8.1 简介
A.Throwable 类是 Java 语言中所有错误或异常的超类
B.只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出
C.两个子类的实例,Error 和 Exception
6.8.2 常用的方法
方法名称 |
方法描述 |
public String getMessage() |
返回此 throwable 的详细消息字符串 |
public String toString() |
返回此 throwable 的简短描述 |
public void printStackTrace() |
打印堆栈信息 |