天亮--DAY18

今天主要学习了常用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,是错误信息

上一篇:Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day18】—— 奇葩问题合集


下一篇:day18-IDEA的使用与多线程