API
学习内容
什么是API
API(Application Program Interface)——应用程序编程接口。在Java中,Java类库就是API。
简单来说API就是程序对外提供的接口,供他人使用的方法或字段定义。
常用API
Object类
Object类是所有
- 包路径:java.lang.Object
- 构造方法: 只有一个无参构造
- 字段: 无
- 实例方法:
实例方法 功能 protected native Object clone() 创建并返回此对象的一个副本 public boolean equals(Object) 指示某个对象是否与此对象相等
需要子类重写用于设置比较条件
此处使用"=="比较两个对象public String toString() 返回当前对象字符串表示形式
需要子类重写用于设置对象的字符串表示形式
此处返回"类名@16进制的哈希码"public native int hashCode() 返回当前对象的哈希码值 public final native Class<?> getClass() 获取当前对象运行时的类实例 public final native void wait() 让正在当前对象上活动的线程处于等待状态
同时释放锁public final native void notify() 唤醒正在当前对象上的等待的线程 public final native void nortifyAll() 唤醒正在当前对象上所有等待的线程 protected void finalize() 当垃圾回收器确定当前对象没有更多引用指向时,
由垃圾回收机器调用此方法
重写此方法用于设置垃圾被回收时的信息(遗言)可以看出Object类的很多方法都被native关键字修饰,表示该方法底层调用C++写的dll程序(动态链接库文件)
- 静态方法: 无
日期类
Date类
-
包路径:java.util.Date
-
继承关系:Date —继承—>Object
-
构造方法:
public Date() ------> 获取当先系统的时间
public Date(long) ------> 获取指定时间戳(从时间原点1开始到现在)的时间 -
实例方法
public boolean after(Date) ----> 判断某个Date对象是否在当前对象之后
public boolean before(Date) ----> 判断某个Date对象是否在当前对象之前
public long getTime() -----> 获取从时间原点到当前时间的毫秒值(时间戳)
SimpleDateFormat类
- 包路径:java.text.SimpleDateFormat
- 继承关系:SimpleDateFormat—继承—>DateFormat—继承—>Format—继承—>Object
- 构造方法:public SimpleDateFormat(String) 参数给定指定的模式
- 实例方法:
public String format(Date) -----> 将Date 格式化为 String
public Date parse(String) ----> 将String 解析为 Date
public void applyPattern() ----> 将指定的模式给当前SimpleDateFormat对象
public Stirng toPattern() -----> 返回当前对象指定的模式
指定的模式组成
Date与String和时间戳(long)与之间的转换
- Date ——> String
- 使用实例方法toString()
- 使用SimpleDateFormat对Date对象格式化
import java.util.Date; import java.text.SimpleDateFormat; public class Test { public static void main(String[] args){ //获取当前时间 Date currentDate = new Date(); //指定的模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //Date ---> String String str1 = currentDate.toString(); //第一种方式(未格式化) String str2 = sdf.format(currentDate); //第二种方式(格式化后) System.out.println("未格式化:" + str1); System.out.println("格式化:" + str2 ); } }
- Date ——> 时间戳
- 使用实例方法getTime()
import java.util.Date; public class Test { public static void main(String[] args){ //获取当前时间 Date currentDate = new Date(); //Date ----> long(时间戳) long millis = currentDate.getTime(); System.out.println("毫秒值:" + millis); } }
- 时间戳 ——> Date
- 使用构造方法
import java.util.Date; public class Test { public static void main(String[] args){ //获取当前毫秒值 long currentMillis = System.currentTimeMillis(); //long(时间戳) ----> Date Date date = new Date(currentMillis); System.out.println(date); } }
- String ——> Date
- 使用SimpleDateFormat对字符串进行解析(字符串内容要与SimpleDateFormat对象指定的模式相同)
import java.util.Date; import java.text.SimpleDateFormat; import java.text.ParseException; public class Test { public static void main(String[] args) throw ParseException { //指定的模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //String ----> Date Date date = sdf.parse("2022-07-26 21:02:31 000"); System.out.println(date); } }
此处有一个ParseException(包路径是java.text.ParseException),这个异常的直接父类是Excption,是编译时异常,Java语法要求必须处理编译时异常,不处理编译器会报错,此处选择将异常直接上抛给虚拟机
DecimalFormat类
- 包路径:java.text.DecimalFormat
- 继承关系:DecimalFormat—继承—>NumberFormat —继承—>Format—继承—>Object
- 构造方法:public DecimalFormat(String) 参数给定指定的模式
- 实例方法:
public String format(long/double) -----> 将数值格式化成字符串
public void applyPattern() ----> 将指定的模式给当前Format对象
public Stirng toPattern() -----> 返回当前对象指定的模式
指定的模式组成
使用案例
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args){
//指定模式(千分位分隔+保留3位小数点)
DecimalFormat df = new DecimalFormat("#,###.000");
String str = df.format(1564.34);
System.out.println(str); //1,564.340
//指定模式(百分数保留2位小数点)
df.applyPattern("#.00%");
String str2 = df.format(0.6421);
System.out.println(str2); //64.21%
}
}
BigDecimal类
BigDecimal属于大数据,精度极高,专门用于财务软件中。
- 包路径:java.math.BigDecimal
- 继承关系:BigDecimal—继承—>Number—继承—>Object
- 构造方法:public BigDecimal(int/long/double…)
- 实例方法:
public BigDecimal add(BigDecimal) -----> 两个BigDecimal相加
public BigDecimal subtract(BigDecimal) -----> 两个BigDecimal相减
public BigDecimal multiply(BigDecimal) -----> 两个BigDecimal相乘
public BigDecimal divide(BigDecimal) -----> 两个BigDecimal相除
BigDecimal是引用数据类型,并不能直接算数运算
String类与八大包装类
Random类
Scanner类
工具类
* 工具类当中大部分是静态方法。
Math类
- 包路径:java.lang.Math
- 继承关系:java.lang.Math——> java.lang.Object
- 静态方法
静态方法 | 功能 |
---|---|
public staitc double ceil(double) | 向上取整 |
public staitc double floor(double) | 向下取整 |
public static long/int round(double/float) | 四舍五入 |
public static 多类型 abs(多类型) | 绝对值 |
public static 多类型 max(多类型,多类型) | 返回两个数中的最大值 |
public static 多类型 min(多类型,多类型) | 返回两个数中的最小值 |
public static double pow(double a,double b) | 返回ab |
public static double radom() | 返回一个0~1之间的浮点数,范围大于等于0.0且小于1.0 与Random类的关系:底层调用了Random的nextDouble()方法 |
对于round()、ceil()、floor()方法的对浮点数进行取整——x轴的正方向即为上
使用案例
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args){
//max()
System.out.println("最大值:" + Math.max(1,2)); //2
//min()
System.out.println("最小值:" + Math.min(1,2)); //1
//round()数轴方向取整
System.out.println(Math.round(1.5)); //2
System.out.println(Math.round(-1.5)); //-1
//ceil()与floor()
System.out.println(Math.ceil(-1.5)); //-1.0
System.out.println(Math.floor(-1.5)); //-2.0
//pow()
System.out.println(Math.pow(2,10)); //1024.0
//random()--->使用random()和DecimalFormat结合获取一个%0~%100之间的数字,范围[0%,100%]
DecimalFormat df = new DecimalFormat("##%");
System.out.println(df.format(Math.random()));
}
}
Arrays类
- 包路径:java.util.Arrays
- 静态方法
静态方法 | 功能 |
---|---|
public static String toString(数组多类型重载) | 以"[v1,v2,v3]"的格式打印 某个数组的字符串表示形式, |
public static void sort(数组多类型重载) | 对某个数组的内容进行排序 |
public static int binarySearch(数组,要查找的元素) | 在参数数组中查找参数元素 找到返回索引,找不到返回-1 |
Collections类
思维导图
时间原点:是以GMT/UTC时间「1970-01-01T00:00:00」为起点 ↩︎