java中有很多常用的API,它们提供了便捷的使用方法和工具类,让我们来看一看java中常用的API吧。
1.math类:
它包含基本的数字运算方法,如对数、指数、平方根和三角函数等,一般数据类型为double(也有int型)
但是它没有构造方法,有static进行修饰(如果类的成员都是静态的则通过类名就可以直接调用。)
math类中的常用方法:
方法名 | 说明 |
public static int abs(int a) | 返回参数的绝对值 |
public static double ceil(double) | 返回大于等于参数的最小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的正值 |
除此之外还有不太常见但十分有用的几个方法:
方法名 | 说明 |
public static double sqrt(double number) | 返回值是参数的double型平方根 |
public static double cbrt(double number) | 返回值是参数的double型立方根 |
public static double exp(double x) | 返回值是double的e的x次方 |
public static double nextUp(Type x) | 返回比x大一点的double型浮点数 |
public static double nextDown(Type x) | 返回比x小一点的double型浮点数 |
public static double nextAfter(Type x,Type y) | 返回x和y间与x相邻的浮点数 |
2.system类:
它包含n个方法和字段,不能被实例化。
System中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。
System作为系统类,在JDK的java.lang包中,可见它也是一种java的核心语言特性。System类的构造器由private修饰,不允许被实例化。因此,类中的方法也都是static修饰的静态方法。
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)
常用方法如下:
方法 | 说明 |
public static long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
public static void exit(int status) | 结束当前运行的java虚拟机,非0表示异常终止 |
object类:它是类层次结构的根类(老祖宗),java中所有子类都会继承object中的public方法
构造方法如下:public object()构造一个新对象
常用方法:
| final 方法、获取对象的运行时 class 对象,class 对象就是描述对象所属类的对象。这个方法通常是和 Java 反射机制搭配使用的 |
| 用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回 true,否则返回 false。一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法 |
public String toString() | 返回对象字符表现形式(代表对象的字符串),一般要重写此方法 |
| 该方法是保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出 CloneNotSupportedException 异常。 默认的 clone 方法是浅拷贝。所谓浅拷贝,指的是对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存。深拷贝则是会连引用的对象也重新创建 |
| final 方法,主要用于唤醒在该对象上等待的某个线程 |
| final 方法,主要用于唤醒在该对象上等待的所有线程 |
| 以看到 wait() 方法实际上调用的是 wait(long timeout) 方法,线程调用wait(0)的话,线程会无限等待,直到有其它线程调用notify()或者notifyAll()把它唤醒 |
| 该方法是保护方法,主要用于在 GC 的时候再次被调用,如果我们实现了这个方法,对象可能在这个方法中再次复活,从而避免被 GC 回收。 |
3.Arrays类:
包含用于操作数组的各种方法;
构造方法用private修饰,成员方法用public修饰
常用方法如下:
public static string toString(int [ ]a) | 返回指定数组的字符串表现形式 |
public static void sort(int[ ]a) | 按数字顺序排列指定数组 |
Arrays.asList | 数组转list集合 |
Arrays.binarySearch | 二分查找法:查询数组中是否包含这个元素,如果包含返回该元素的索引值,如果不包含返回一个负数(使用二分查找法时先对数组进行排序) |
Arrays.copyOf(boolean[] original, int newLength) | 复制数组(以布尔型数组举例),original 原数组,newLength 新数组的长度 |
Arrays.copyOfRange(boolean[] original, int from, int to) | 指定数组索引开始和结束的范围复制数组(以布尔型数组举例),original 原数组,from 从此处索引开始, to 从此处索引结束,注意这里,包括from,不包括to |
Arrays.equals(arr1,arr2); | 比较两个数组是否相等 |
system.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 复制数组的另一种方法,同样也是索引开始和结束的范围复制数组,src 原数组名 、srcPos 起始下标、 dest 新数组名、destPos 起始下标、length 复制长度 |
4.日期类:就是字面意思
构造方法:Date() 分配一个Date对象并对其进行初始化以便它表示分配的时间
Date(long date)分配一个Date对象并将其初始化为标准的基准时间即1970年1月1日 00:00:00GMT起的制定毫秒数。
常用方法:
方法 | 说明 |
public long getTime() | 获取对象从基准时间到现在的毫秒值 |
public void setTime() | 设置时间,给的毫秒值 |
5.SimpleDateFormat类:
它是一个具体的类,用以区域设置敏感的方式格式化和解析日期,日期和时间的格式由日期和时间模式的字符串指定,在日期和时间模式字符串中,从“A”到“Z”,以及从‘a’到‘z’的引号的字母被解释为日期或者时间字符串组建的模式字母。
常用模式字母及对应关系如下:
y | 年 |
m | 月 |
d | 日 |
h;m;s | 时;分;秒 |
格式化:(从Date到String)
①public final String format(Date date):将日期格式化成日期/时间的字符串
解析:
②public date parse(String source):从给定的字符串开始解析文本以生成日期。
例如:
Calendar:为某一时刻和一组字段之间的转换提供了一些方法,并为其操作日历字段提供了一些方法。注:Calendar为抽象类,抽象类的特征详情请看 此篇——抽象类和接口
Calendar的用法:Calendar提功了一个类方法getinstance用于获取Calendar对象,其日历字段已使用当前日期和时间的初始化:
格式如下:
Calendar c = Calendar.getInstance();
获取日期的范例:
package API;
//获取当前日期
import java.util.Calendar;
public class Date_Example {
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;//同数组一样从零开始但实际上不存在0月故+1;
int date=c.get(Calendar.DATE);
System.out.println(year+"年\t"+month+"月\t"+date+"日");
}
}
Calendar常用的日期字段:
日历字段 | value |
YEAR | 当前年份 |
MONTH | 当前月份(同数组一样从零开始但实际上不存在0月故+1) |
DATE | 一个月中的某天 |
WEEK_OF_YEAR | 当前年中的第几个星期 |
WEEK_OF_MONTH | 当前月中的第几个星期 |
SECOND | 一分钟中的第几秒 |
DAY_OF_YEAR | 一年中的第几天 |
DAY_OF_MONTH | 一个月中的第几天 |
DAY_OF_WEEK | 一个周中的第几天 |
DAY_OF_WEEK_IN_MONTH | 当前月中的第几个星期(注:当前月第1-7天是第一个星期,8-14是第二个星期,以此类推) |
HOUR_OF_DAY | 一天中的第几小时 |
MINUTE | 一小时中的第几分钟 |
MILLISECOND | 一秒中的第几毫秒 |
Calendar的常用方法:
在创建日期对象之后:以Calendar c = Calendar.getInstance();为例
方法 | 说明 |
c.set(year,month,date,……); 也可以单个字段进行设置: 例如:c.set(Calendar.YEAR ,2022); | 设置时间(set():单纯的设定日期,如果设定的日期不存在的话,他会向下移动。) |
c.add(Calendar.SECOND,1); | 计算时间(但add 时间时,会将不存在的日期归为当月日历的最后一天,此外,与 set() 不同,add() 强迫日历系统立即重新计算日历的毫秒数和所有字段。正值加设定时间,负值倒推) |
异常:
异常是指出现了不正常的情况,大致分为两种,一种是Exception:称为异常类,他表示程序本身可以处理的问题:分为RuntimeException和非RuntimeException
其中RuntimeException:在编译期间是不检查的回来修改代码
非RuntimeException:编译期间必须处理,否则无法通过编译。
一种是Error:严重问题,程序本身无法处理的问题。
异常处理必要性:
减少用户的损失、同时也减少给用户带来的不必要的麻烦;也可以利用异常处理给与用户一些提示
JVM的默认处理方法:
如果程序出了问题但程序员没做任何处理,
①JVM会把异常的名称、位置、原因等信息输出在控制台;
②程序停止执行。
处理异常的方法:
处理异常一般有try……catch和throws两种方法,两种方法所针对的情况有所不同:
try……catch:格式如下:
try{可能出现异常代码;
}catch(异常类名 变量名)
{异常的处理代码;}
执行流程:程序从try里面的代码开始,如果出现异常,该异常对象将被提交给java运行时系统,当java运行时系统接收到异常对象时,会在catch中去匹配异常类,处理完毕后继续往下执行程序。
throws:
格式:方法括号后 +throws 异常类名
例如:public static void method() throws 异常类名
特点:仅仅是抛出异常(运行时的异常)
常见的异常类名:
常见的异常 异常类名 说明
ArithmeticExecption 算数异常类
NullPointerException 空指针异常
ClassCastException 类型强制转换异常
NegativeArrayException 数组负下标异常
ArrayIndexOutOfBoundsException 数组下标越界异常
SecturityException 违背安全原则异常
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常
NumberFormatException 字符串转换数字异常
SQLException 操作数据库异常
IOException 输入输出异常
NoSuchMethodException 方法未找到异常
ava.lang.AbstractMethodError 抽象方法错误异常
throwable:所有错误的根类
成员方法 说明
……Sting getMessage(); 返回throwable的详细信息字符串
……String toString(); 返回可抛出的简短描述
……void printStackTrace(); 把异常的错误信息输出在控制台
编译时异常:必须显示处理,否则无法通过编译;
运行时异常:无需显示处理,也可以和编译时异常一样处理。
自定义异常:
public class 异常类名 extends Exception{
无参构造or带参构造}
例子:
public clas ScoreException extends EXception{
public ScoreException(){};
public ScoreException(String message){
super(message);}
}