Java常用API与异常体系

Java API是程序开发过程中不可或缺的工具包之一,它包含许多可以帮助程序员轻松编写代码的Java类,可以提高我们的代码编写效率。

异常则表示java程序中出现了不正常的情况,情况有多种,有些是不影响程序运行的,有一些则需要处理之后才能编译运行。

下面对Java中的常用类和异常体系进行简单介绍。

Java常用工具类

1、Math

Math 包含执行基本数字运算的方法。

常用方法:
abs()、ceil()、floor()、round()、max()、min()、pow()、random()等。

Math类中无构造方法,但内部的方法都是静态的,则可以通过类名进行调用。

案例分析

import java.util.Random;

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

        Random random = new Random();

        int num1 = random.nextInt(100);
        int num2 = random.nextInt(100);

        int maxNum = Math.max(num1,num2);

        System.out.println(maxNum);

    }
}

在案例中,创建了一个随机数生成对象,接着生成了两个0-100(不包括100)的随机整数,之后通过Math类中的max方法获取两个随机数中的较大值,打印到控制台。

2、Object类

Object 是类层次结构的根,每个类都可以将 Object 作为超类。

所有类都直接或者间接的继承自该类,该类所具备的方法,所有类都会有一份。

常用方法:

toString():作用是以良好的格式,直观的展示对象中的属性值。

案例分析

public class Book {
    private String title;
    private String author;

    public Book(String title, String author) {
        this.title = title;
        this.author = author;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "title='" + title + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

public static void main(String[] args) {
        // 创建Book对象
        Book book = new Book("Java编程思想", "Bruce Eckel");
        // 直接输出book对象
        System.out.println(book); 
        // 输出结果:Book{title='Java编程思想', author='Bruce Eckel'}
    }

equals():用于对象之间的比较,返回true或false。

如果不希望比较对象的地址值,想要结合对象属性进行比较的时候,可以对该方法进行重写。

案例分析

假设我们有一个Person类,包含name和age两个属性,现在需要判断两个Person对象是否相等,可以通过以下代码来实现:

public class Person {
    private String name;
    private int age;

    // 构造函数及其他方法省略

    @Override
    public boolean equals(Object o) {    //重写equals方法
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }

}

public static void main(String[] args) {
        Person p1 = new Person("Tom", 18);
        Person p2 = new Person("Tom", 18);
        System.out.println(p1.equals(p2)); // 属性值相同,输出 true
    }

案例中,通过重写方法,覆盖了Object类中定义的equals方法,首先使用this关键字判断是否是同一个对象,如果是,直接返回true;否则使用getClass()方法判断是否是同一种类型的对象,如果不是,则返回false;最后判断name和age两个属性是否相等,并调用Object类中的equals方法来进行比较处理。由于p1和p2的name和age属性相等,因此equals方法返回true。

3、日期类Date

Date类主要用于处理日期和时间数据。

常用方法:
getTime():获取的是从1970年1月1日 00:00:00到现在的毫秒值(long)。

setTime(long time):设置时间,参数是毫秒值。

before():判断是否在指定日期之前。

after():判断是否在指定日期之后。

案例分析

(1)获取当前时间

import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        //创建一个Date对象
        Date date = new Date();
        System.out.println(date.toString());
    }
}

(2)格式化日期和时间

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = sdf.format(date);
        System.out.println(str);
    }
}

通过SimpleDateFormat类的format()方法将Date类型的日期对象格式化成指定格式的字符串。
SimpleDateFormat所跟的参数就是我们自定义的日期格式。

(3)比较两个日期的前后顺序

import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(System.currentTimeMillis() + 1000);  //延迟一秒钟
        boolean flag = date1.before(date2);
        System.out.println(flag);
    }
}

在案例中,我们利用Date类的before()方法判断date1是否在date2之前,如果是则返回true,否则返回false。

小结

除了Java提供的工具类之外吗,我们也可以根据个人需求,将一些常见的操作以及方法封装在一个自定义工具类中,便于调用,减少重复性操作。

在自定义工具类时,通常有两个设计规范:

1、构造方法用 private 修饰

2、成员用 public static 修饰

Java异常体系

在编写代码时,如果有一些不可预料或者错误发生了,程序就可能崩溃或停止执行。为了避免这种问题,Java语言提供了异常处理机制来捕获运行时发生的异常,其中Exception是所有其他异常类型的父类。

如图所示,Java中的异常主要分为运行时异常和非运行是异常两类。

其中运行时异常是可以通过编译的,也可以运行,但出现问题后也需要进行处理。

java默认的异常处理机制是,在控制台打印异常信息,之后在该位置停止运行。

 异常处理

1、try-catch 代码块

try块用来包含运行时可能会产生异常的程序段。catch则是用来匹配异常类型,在匹配到之后进行相应异常处理。

案例分析

public class ExceptionDemo {

	public static void main(String[] args) {
		int a = 10;
		int b = 0;
		try {
			int c = a / b;
			System.out.println(c);
		} catch (ArithmeticException e) {
			System.out.println("Division by zero.");
		}
	}

}

在案例中,执行到try块中时,发现除数为0,出现异常,停止往下执行,进入catch判断异常类型,匹配之后再控制台打印异常信息,try内余下的代码不会再继续执行。

2、throws和 throw 关键字

throws:用于声明可能会抛出的异常类型,并规定了由该方法的调用者来处理这些异常。

public void myMethod() throws IOException {
    //程序段
}

代码中声明了一个可能会抛出IOException异常的情况。方法的调用者就需要考虑如何处理这个异常。

throw:用于直接触发异常并给出相关的异常信息。

if (age < 0) {
    throw new IllegalArgumentException("Age cannot be negative!");
}

案例代码中,如果年龄小于0,则会触发IllegalArgumentException异常并传递错误信息“Age cannot be negative!”。

小结

 

throws适用于将异常向上一级抛出,由上一级负责捕获和处理;而throw适用于在当前层次直接抛出异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值