1.BigInteger
1.1概述
1、Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的, 最大为263-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力,更不用说进行运算了。
2、java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供
所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。
1.2常用方法
public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。
BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger
BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger
BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger
BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数 相除只保留整数部分。
BigInteger remainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。
BigInteger pow(int exponent) :返回其值为 (thisexponent) 的 BigInteger。
1.3使用
//必须传入字符串
BigInteger v1 = new BigInteger("123123");
BigDecimal v2 = new BigDecimal(20);
BigDecimal v3 = new BigDecimal(20);
//+
BigDecimal result = v2.add(v3);
System.out.println(result);
//-
result = v2.subtract(v3);
System.out.println(result);
//*
result = v2.multiply(v3);
System.out.println(result);
// /
// %
result = v2.remainder(v3);
System.out.println(result);
1.4阶乘
public class BigInteger_02{
public static void main(String[]args){
System.out.println(test(120));
System.out.println(test1(120));
System.out.println(Long.MAX_VALUE);
}
public static long test(long n){
long result = 1;
for(int i =1;i<=n;i++){
result *=i;
}
return result;
}
public static BigInteger test1(long n){
BigInteger result = new BIgInteger("1");
for(int i = 1;i<=n;i++){
result = result.multiply(new BigInteger(i+""));
}
return result;
}
}
2.Math
2.概述
java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回
2.2常用方法
abs 绝对值 acos,asin,atan,cos,sin,tan 三角函数 sqrt 平方根
pow(double a,double b) a的b次幂 log 自然对数
exp e为底指数
max(double a,double b)
min(double a,double b)
random() 返回0.0到1.0的随机数
long round(double a) double型数据a转换为long型(四舍五入)
toDegrees(double angrad) 弧度—>角度
toRadians(double angdeg) 角度—>弧度
3.异常机制
1.空指针异常
2.下标异常
3.类型异常
4.栈内存溢出
3.2概述
异常是Java中提供的一种识别及响应错误情况的一致性机制。有效地异常处理能使程序更加健壮、易于调试。
异常发生的原因有很多,比如:
- 用户输入了非法数据
- 要打开的文件不存在
- 网络通信时连接中断
- JVM内存溢出
- 这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。
3.3继承体系
3.4Error
系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。
比如:OOM(内存溢出错误)、VirtualMachineError(虚拟机错误)、StackOverflowError(堆栈溢出错误)等,一般发生这种情况,JVM会选择终止程序。
3.5Exception
3.5.1概述
Exception是所有异常类的父类。分为非RuntimeException和RuntimeException 。
非RuntimeException
指程序编译时需要捕获或处理的异常,如IOException、自定义异常等。属于checked异常。
RuntimeException
指程序编译时不需要捕获或处理的异常,如:NullPointerException等。属于unchecked异常。一般是由程序员粗心导致的。如空指针异常、数组越界、类型转换异常等。
3.5.2常用方法
3.5.3Try…catch…
try{
高风险代码
只要出错,就执行catch,try中剩余代码不再执行
如果没出错,try就可以顺利执行完成,并且catch不再执行
}catch(异常类型 变量){
处理方案;
}
3.5.4Throws
3.5.5Finally
3.5.63.5.6 不能有更宽泛的异常
3.6自定义异常类
3.6.1需求
完成用户登陆功能
传入用户信息,校验用户名和密码是否正确,如果正确则返回该用户所有信息,反之则提示错误信息
3.6.2实体类
3.6.3异常类
3.6.4Controller
3.6.5Data
3.6.6Dao
3.6.7Service