Java 第四周学习周报

一、异常

常见的运行时异常

异常类型 说明
java.lang.ArithmeticException 算数异常(比如被零除)
java.lang.NullPointerException 空指针异常(调用方法,属性的对象为null时)
java.lang.ArrayIndexOutOfBoundsException 数组索引越界
java.lang.ClassCastException 类型转换异常
java.util.InputMismatchException 输入的数据类型不匹配读取的类型
java.lang.ClassNotFoundException 类未找到异常
java.io.FileNotFoundException 文件未找到异常
java.io.IOException IO异常(输入输出异常)
java.sql.SQLException 访问数据库异常
java.text.ParseException 解析异常

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

会在return中间执行!
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,但return并不是让函数马上返回,而是return语句执行后,把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回!但此时会有两种情况;
1)如果finall中也有return,则会直接返回并终止程序,函数栈中的return不会被完成!
2)如果finally中没有return,则在执行完finall中的代码之后,会将函数栈中的try中的return的内容返回并终止程序;catch同try。

final,finally,finalize的区别

  1. final是一个关键字用于修饰类,属性和方法。
  2. finalize是Object类中提供的一个方法,用于在jvm对对象清理时,对于当前对象执行一些最终的处理工作
  3. finally是异常中的语句块

运行时异常与一般异常有何异同?

  • 运行时异常是在程序运行期间,出现了对应异常情况之后以后jvm(虚拟机)抛出,并且将异常的堆栈信息输出到控制台(或日志文件)。
  • 一般异常是在程序运行期间,或者编译期间由编译器抛出的异常信息,这些异常情况可以由程序员进行处理(抛出,捕获)。

error 和 exception有什么区别?

  • error:错误异常是系统级别的问题,比如说JVM内存溢出,JVM系统错误等。
  • exception:异常通常是程序在运行期间,或者编译期由编译器抛出的一些,可以被程序员处理的代码上的问题。

JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

  • throws:(获取异常)用于方法的声明中,抛出有可能出现的异常
  • throw:(抛出异常)用于语句块中,抛出指定类型的异常对象,- throw一旦执行,则一定会出现该类型异常。
  • try:是将会发生异常的语句括起来,从而进行异常的处理
  • Catch:是如果有异常就会执行它里面的语句
  • Finally:不论是否有异常都会执行语句

二、常用类

Objects类

  • Objects类是一个工具类
  • Objects对外不提供构造器,因此无法创建对象
  • Objects类中的所有方法都是static
  • 提供的是对于对象的空指针安全操作的方法
User u1 = new User(1, "softeem", "123456");
User u2 = null;
//空指针安全的对象比较
System.out.println(Objects.equals(u1, u2));
//空指针安全的toString
System.out.println(Objects.toString(u2)); // 对象若为null则输出“null”字符串
System.out.println(Objects.toString(u2,"0")); //对象若为null则输出“0”

//空指针安全的hashCode
System.out.println(Objects.hashCode(u2));
//为空判断
System.out.println(Objects.isNull(u2));
//不为空判断
System.out.println(Objects.nonNull(u2));
//检查对象不为空,若为空则抛出NullPointerException
System.out.println(Objects.requireNonNull(u2));

Random类

构造器:

  • Random()

常见方法:

  • nextBoolean():随机一个布尔值
  • nextDouble():随机一个0.0~1.0之间的double值
  • nextInt():随机一个int范围内的整数值
  • nextInt(int bounds):随机一个从0~bounds-1位的整数值
public class RandomDemo {
   

    private static final class RandomGeneratorHolder{
   
        static final Random randomNumberGenerator = new Random();
    }

    private static final String SOURCE = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    //随机指定长度位验证码
    public static String genCode(int count) {
   
        String code = "";
        for(int i = 0;i < count;i++) {
   
            int index = RandomGeneratorHolder.randomNumberGenerator.nextInt(SOURCE.length());
            code += SOURCE.charAt(index);
        }
        return code;
    }

    public static void main(String[] args) {
   

        Random r = new
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值