今天主要学习了常用API、异常机制
Random类:
随机数 从0开始
随机生成某个值到某个值之间的数
nextInt(最大值-最小值+1)+最小值
java.math.BigDecimal和BigInteger精度极高
BigInteger bigInteger = new BigInteger("99");
BigInteger创建对象的时候要传递字符串数字
BigDecimal bigDecimal1 = new BigDecimal(98);
BigDecimal bigDecimal2 = new BigDecimal(98);
引用类型,不能直接相加
BigDecimal bigDecimal3 = bigDecimal1.add(bigDecimal2);
System.out.println(bigDecimal3);
减
bigDecimal3 = bigDecimal1.subtract(bigDecimal2);
乘
bigDecimal3 = bigDecimal1.multiply(bigDecimal2);
除
bigDecimal3 = bigDecimal1.divide(bigDecimal2);
取余
bigDecimal3 = bigDecimal1.remainder(bigDecimal2);
数字格式化:java.text.DecimalFormat;
#任意数字,0-9任意的单个数字
,千分位
.小数点
0补位
DecimalFormat d1 = new DecimalFormat(",###");//加入千分位
System.out.println(d1.format(12345678));
d1 = new DecimalFormat(",###.##");
System.out.println(d1.format(123456789.123));
加入千分位,四舍五入保留两位小数
d1 = new DecimalFormat(",###.00000");
System.out.println(d1.format(123456.123));
加入千分位,保留五位小数,不够不0
Math 提供了科学计算和基本的数字操作方法
全都是静态方法,并且Math在java.lang下,不需要导包
System.out.println(Math.abs(-99));绝对值
System.out.println(Math.ceil(1.00999));向上取整,小数部分不为0,进一
System.out.println(Math.floor(1.8989));向下取整,舍弃小数
System.out.println(Math.sqrt(9));平方根
System.out.println(Math.cbrt(64));立方根
System.out.println(Math.random());random随机数,生成大于0.0且小于1.0的数
System.out.println(Math.rint(2.5));
System.out.println(Math.rint(3.5));rint四舍五入,当小数部分为5时,银行算法,取偶数
System.out.println(Math.pow(3, 3));Math.pow(a,b) a的b次方
异常:
是java提供的识别错误的响应机制,可以使程序更加健壮,易于调试
Java中有个专门模拟所有异常的类,Throwable是异常类的祖类,所有的异常类都是他的子类
如果程序出现了异常,会终止程序生命周期执行,所以需要进行处理
使用if可以解决大部分错误,但是if只能解决可预知的,不可预知的没法解决
异常处理形式:
try...catch...:解决异常,一般用在客户端(调用处)
throws:抛异常,一般用在类库端,也就是服务端,被调用的地方
throw:异常源,制作异常,创建异常对象
try...catch...语法:
try{ 高风险代码;}
catch(异常类型 变量){ 出错后的操作};
第二种
try{ 高风险代码;}
catch(异常类型 变量){ 出错后的操作};
catch(异常类型 变量){ 出错后的操作};
try {
FileInputStream fileInputStream = new FileInputStream("D://a.txt");
高风险代码,可能出现错误的代码
String s1 =null;//try中出现错误的语句后的代码不执行,执行catch
s1.equals("");
可以写多个catch捕捉多个异常,进行不同的处理
多个异常之间不能有继承关系,否则必须是子类到父类
否则父类会因为多态的原因把子类的异常对象获取
System.out.println("错误后的代码");
try中出现错误的语句后的代码不执行,执行catch
} catch (FileNotFoundException e) {
e.printStackTrace();//打印追踪栈帧,程序员排错方便
String s = e.getMessage();//获取错误信息,便于响应用户
System.out.println(s);//获取错误信息,便于响应用户
System.out.println("排错后的处理措施");//出错后的处理措施
}catch (NullPointerException e) {
System.out.println("空指针异常");
}
System.out.println(123);
使用try catch异常处理后,代码可以正常运行
throws是把异常抛出,和调用处说明这里可能有异常,不处理
可以抛出多个异常,多个异常之间用逗号隔开
finally:是必须执行的语句,只有System.exit(0);不执行
finally不能单独使用,必须和try一起或者与try...catch一起使用
子类抛出的异常类要么和父类抛出的异常类一样
要么就是父类抛出的异常类的子类
要么就不抛出异常
自定义异常类 :
1 继承一个已有的异常类
一般我们继承Exception即可
如果是运行时异常,则继续RuntimeException
2 公共的无参构造
3 有参构造,传入String,是错误信息