Java常用类和异常


Java常用类及异常处理

1. 获取随机数

//1.调用Math类中的random()方法
double d1 = Math.random();
//如果需要[0-10.0)的随机数,将d1*10即可
int i = (int)(d1*10);
//2.创建random对象调用其中的nextInt方法生成随机数[0-x)的数
Random random = new Random();
int rd = random.nextInt(123);
//3.使用ThreadLocalRandom类
ThreadLocalRandom current = new ThreadLocalRandom.current();
//生成[1-5)的随机数
current1.nextInt(1,5)

生成验证码方法

package random;

import java.util.Random;

public class TestCheckCode {
    public static void main(String[] args) {

//        输入源字符串和验证码位数
        String checkCode = getCheckCode(4);
        System.out.println(checkCode);
    }

    public static String getCheckCode(int codeLength) {
        String str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        StringBuffer sbf1 = new StringBuffer();

        for (int i = 0; i < codeLength; i++) {
            Random random = new Random();
            int index = random.nextInt(str.length());
            sbf1.append(str.charAt(index));

        }
        return sbf1.toString();

    }

}

2. 日期相关类

  1. Date类
import java.util.Date;
public class TestDate {
    public static void main(String[] args) {
        //创建Date类时间对象,根据系统获取时间值
        Date d1 = new Date();
        System.out.println(d1);
//        System.out.println(System.currentTimeMillis());
        Date d2 = new Date(System.currentTimeMillis() - 1000000L);
        System.out.println(d2);
        System.out.println(d1.after(d2));
        System.out.println(d1.before(d2));
    }
}
  1. SimpleDateFormat类
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateFormat {
    public static void main(String[] args)  {
        Date date1 = new Date();
        System.out.println(date1.getTime());
//根据指定格式格式化时间类型或解析    创建SimpleDateFormat对象
        SimpleDateFormat spf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat spf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        SimpleDateFormat spf3 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//        SimpleDateFormat spf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String f3 = spf3.format(date1);
        System.out.println(f3);
        String f2 = spf2.format(date1);
        System.out.println(f2);

//调用format类型进行格式化
        String f1 = spf1.format(date1);
        System.out.println(f1);
//根据字符串进行解析相应的时间格式返回默认时间格式
        try{
            Date date2 = spf1.parse(f1);
            System.out.println(date2);
        }catch{
            e.printStackTrace();
        }
    }
}
  1. Calendar类
import java.util.Calendar;

public class TestCalender {

    public static void main(String[] args) {

        Calendar instance = Calendar.getInstance();
        int i = instance.get(Calendar.YEAR);
        System.out.println(i);

    }
}

3. 异常Exception

  1. 代码正常运行不会出问题,参数变量不符合要求或发生其他意外,代码终止运行.
  2. 代码中的异常处理好了,代码就可以正常运行

异常分为:

  1. 运行时异常

    • 指编译期不要求强制处置的异常.一般是指编程时的逻辑错误,是程序员应该积极和避免其出现的异常.java.lang.RuntimeException类及它的子类都是运行时异常.

    • 对于这类异常可以不作处理,这类异常很普遍,若全面处理可能会对程序的可读性和运行效率产生影响.

  2. 编译时异常

    • 指编译器要求必须处置的异常,及程序在运行时由于外界因素造成的一般性异常.编译器要求Java程序必须捕获或声明所有编译时异常.
    • 对于这类异常,必须处理.
package homework;

public class HomeWork1 {
    public static void main(String[] args) {
//        ArithmeticException    算数异常,除数为0
        try {

            System.out.println(0 / 0);
        } catch (Exception e) {
            e.printStackTrace();
        }
//        ArrayIndexOutOfBoundsException    数组索引越界异常
        try {

            int[] arr = new int[1];
            System.out.println(arr[1]);
        } catch (Exception e) {
            e.printStackTrace();
        }
//        NullPointerException    空指针异常
        try {
            String s = null;
            s.intern();
        } catch (Exception e) {
            e.printStackTrace();
        }
//        ClassCastException    数据类型转换异常

        try {
            Number integer = new Integer(2);
            double d1 = (double) integer;
            System.out.println(d1);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

异常处理机制

1. try-catch-finally

  • Java提供的异常处理的抓抛模型

  • Java程序的执行过程中如出现异常,会生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程被称为抛出throw异常

  • 异常对象的生成:

    • 由JVM自动生成
    • 由开发人员手动生成 Exception exception = new ClassCastException();创建好的异常不抛出对程序没有影响,就像创建了一个普通类一样.
try{
    ...//可能出现异常的代码
}
catch{
    ...//当产生Exception1型异常时的处置措施
}
catch{
    ...//当产生Exception2型异常时的处置措施
}
[finally{
    ...//无论是否发生异常,无条件执行的语句
}]
  • try捕获异常的第一步是用try{}语句块选定捕获异常的范围,将可能出现异常的代码放在try语句中

  • catchcatch(Exception e) 在catch语句块中是对异常对象进行处理的代码,每个try{}语句块可以伴随一个或多个catch语句,对于异常处理可能产生的不同类型的异常对象.

    只有发生错误才会执行catch语句块中的内容,如果没有错误,则会跳过

getMessage() 获取异常信息,返回字符串

printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置,返回void

  • finally

    捕获异常的最后一步是用过finally语句为异常处理提供一个统一的出口,使得在控制流传到程序的其他部分之前,能够对程序的状态作统一的管理.

    无论是否发生了异常,只要JVM没有关闭,finally语句块中的内容都会执行.

2. throws

  • 声明抛出异常是Java中处理异常的第二种方式
    • 如果一个方法中的语句可能产生莫衷异常,但是并不能确定如何处理这种异常,则此方法应显示的声明抛出异常,表名该方法将不对这些异常进行处理,而由该方法的调用者负责处理.
    • 在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类.
  • `public void test() throws Exception{}

重写方法声明抛出异常规则:

​ 重写方法不能抛出比被重写方法范围更大的异常类型.

3. 手动抛出异常

Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可以根据需要使用人工创建并抛出

Exception e = new Exception();
throw e

4.用户自定义异常类

  • 一般用户自定义异常类都是RuntimeException的子类
  • 自定义异常通常需要编写几个重载的构造器
  • 自定义异常需要提供serialVersionUID
  • 自定义的异常通过throw抛出
  • 自定义异常最重要的是异常类的名字,当异常出现时,可以根据名字判断异常类型

文章作者:
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
 上一篇
day4 day4
title: Java表达式,运算符categories: Javatags: Java 1. 表达式1.1 表达式作用为了按照一定的运算规则计算出结果值,结果值如何使用 结果值可以直接使用,也可以通过一个变量保存起来然后使用 表达式
2020-10-25
下一篇 
Java语法,注释,变量,关键字 Java语法,注释,变量,关键字
1. Java基本语法1.1 Java注释注释帮助开发人员理解代码含义,提高代码的可读性. 1.1.1 单行注释//注释内容 1.1.2 多行注释/*注释内容*/ 1.1.3 文档注释/**注释内容*/ 1.2 分隔符 分号; 语句的分割,
2020-10-25
  目录