1、Math
Math 包含执行基本数字运算的方法,可以实现绝大多数的数学运算
Math类中无构造方法,但内部的方法都是静态的,所以可以通过 类名.进行调用
常用方法如下:
方法名 方法名 | 说明 |
---|---|
public static int abs(int a) | 返回参数的绝对值 |
public static double ceil(double a) | 返回大于或等于参数的最小double值,等于一个整数 |
public static double floor(double a) | 返回小于或等于参数的最大double值,等于一个整数 |
public static int round(float a) | 按照四舍五入返回最接近参数的int |
public static int max(int a,int b) | 返回两个int值中的较大值 |
public static int min(int a,int b) | 返回两个int值中的较小值 |
public static double pow (double a,double b) | 返回a的b次幂的值 |
public static double random() | 返回值为double的正值,[0.0,1.0) |
2、System
System 类是一些与系统相关属性和方法的集合,System 类中所有的属性都是静态的,要想引用这些属性和方法,直接使用 System 类调用即可。
System的常用方法如下:
3、Arrays
Java中的Arrays是用来操作数组的工具类,支持如下功能:拷贝数组、转换为list、填充等。
Arrays的常用方法如下:
方法名 | 说明 |
---|---|
public static String toString(int[] a) | 返回指定数组的内容的字符串表示形式 |
public static void sort(int[] a) | 按照数字顺序排列指定的数组 |
public static T copyOf(T[] original, int newLength) | 复制数组,赋予新的长度 |
public static boolean equals(Object[] array1, Object[] array2) | 判断两个数组是否相等 |
4、Date类
Date不是一个静态的类,所以需要使用构造方法进行初始化后再使用,Date类提供了有参和无参两种构造方法。
Date的常用方法如下:
方法名 | 说明 |
---|---|
public long getTime() | 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值 |
public void setTime(long time) | 设置时间,给的是毫秒值 |
代码演示:
public class DateDemo {
public static void main(String[] args) {
//创建日期对象
Date d = new Date();
long time = System.currentTimeMillis();
d.setTime(time);// 将当前时间赋值给d
System.out.println(d);// 输出当前时间
}
}
5、SimpleDateFormat
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
SimpleDateFormat类构造方法:
方法名 | 说明 |
---|---|
public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认模式和日期格式 |
public SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat使用给定的模式和默认的日期格式 |
常用方法:
例:将日期格式改为yyyy-mm-dd的格式
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个日期(格式:yyyy-mm-dd,如:2023-02-27)");
String date1 = scanner.nextLine();
System.out.println("请输入第二个日期(格式:yyyy-mm-dd,如:2023-02-27)");
String date2 = scanner.nextLine();
fun(date1,date2);
}
public static void fun(String date1,String date2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = null,d2 = null;
try {
d1 = sdf.parse(date1);
d2 = sdf.parse(date2);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("输入的日期格式不正确");
return;
}
System.out.println("两个日期相差"+Math.abs(d1.getTime()-d2.getTime())/1000/60/60/24+"天");
}
}
6、Calendar类
Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。
该方法返回一个Calendar 对象。
例:Calendar rightNow = Calendar.getInstance();
Canlendar的常用方法:
方法名 | 说明 |
---|---|
public int get(int field) | 返回给定日历字段的值 |
public abstract void add(int field, int amount) | 根据日历的规则,将指定的时间量添加或减去给定的日历字段 |
public final void set(int year,int month,int date) | 设置当前日历的年月日 |
例:获取任意年份的二月份有多少天
public class CalendarTest {
public static void main(String[] args) {
//键盘录入任意的年份
Scanner sc = new Scanner(System.in);
System.out.println("请输入年:");
int year = sc.nextInt();
//设置日历对象的年、月、日
Calendar c = Calendar.getInstance();
c.set(year, 2, 1);
//3月1日往前推一天,就是2月的最后一天
c.add(Calendar.DATE, -1);
//获取这一天输出即可
int date = c.get(Calendar.DATE);
System.out.println(year + "年的2月份有" + date + "天");
}
}
7、异常
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
7.1 异常体系结构如下:
Throwable类是java语言中所有错误和异常的的父类或间接父类,Error和Exception是Throwable的直接子类,Error是程序无法处理的错误,表示运行应用程序中较严重问题,Exception是所有异常类的父类,异常代表着是程序本身可以处理的问题,而异常又分为运行时异常(RuntimeException)和非运行时异常,运行时异常,简单的理解就是运行时异常只有在运行时会报出异常,而非运行时异常无法通过编译,需要先处理才能通过编译运行。
7.2 异常的处理方式
7.2.1 默认处理方式
如果程序出现问题,没有做任何处理,JVM会默认处理:
1.把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
2.程序停止运行
7.2.2 throws
通过使用throws关键字在方法声明处将异常抛出,谁调用这个方法,谁就处理这个异常
7.2.3 try-catch方式处理异常
定义格式:
try {
可能出现异常的代码;
} catch(异常类名 变量名) {
异常的处理代码;
}
执行流程 :
程序从 try 里面的代码开始执行
出现异常,就会跳转到对应的 catch 里面去执行
执行完毕之后,程序还可以继续往下执行
try…catch捕捉异常之后,后续代码可以执行。
7.2.4 finally
finally主要用于回收在try块里打开的物理资源,异常机制会保证finally块总被执行
在finally语句中的代码是最后执行的,并且是一定会执行的,即使try语句块中的代码出现了异常。
finally语句必须和try一起出现,不能单独编写。
finally语句通常跟在最后一个catch代码段后面,只要程序执行到了try,无论try-catch谁执行,除jvm停止运行,否则就一定会执行finally中的代码,try-catch中的return无效,需先执行完finally中的语句后才能返回。
例:return不能跳出方法体,需要先执行finally语句,但return的返回值不变
public static void main(String[] args) {
int test = test(3,5);// test = 8
System.out.println(test);
}
public static int test(int x, int y){
int result = x;
try{
if(x<0 || y<0){
return 0;
}
result = x + y;
return result;
}finally{
result = x - y;
System.out.println("finally语句被执行");
}
}
输出结果为:
finally语句被执行
8