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
适用于在当前层次直接抛出异常。